找回密码
 立即注册

QQ登录

只需一步,快速开始

dongdonggua

注册会员

4

主题

8

帖子

42

积分

注册会员

积分
42
最新发帖
dongdonggua
注册会员   /  发表于:2016-5-20 09:43  /   查看:5574  /  回复:5
1 我在CellValidating事件中有业务处理,当我光标焦点在MultiRow控件中,直接点击关闭窗口时,还是触发了CellValidating事件,如何设置当直接关闭窗口时不触发CellValidating事件


2 我在MultiRow模板中放了一个gcnumber控件,如何获取模板中的gcnumber控件并动态设置gcnumber控件的表示格式。

5 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-5-20 12:05:49
沙发
1.只要离开焦点就会触发CellValidating事件。关闭窗口是焦点离开会触发。
你可以在cellvalidating事件里判断是否是关闭窗口导致事件触发,如果是,就允许关闭窗口。

2.通过Template.Cell可以获取到单元格的控件并设置格式。如果是进入编辑状态,通过Multirow的Editor也可以拿到。
都是需要类型的强制转换。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
dongdonggua
注册会员   /  发表于:2016-5-20 13:16:34
板凳
Alice 发表于 2016-5-20 12:05
1.只要离开焦点就会触发CellValidating事件。关闭窗口是焦点离开会触发。
你可以在cellvalidating事件里判 ...

1 如何在cellvalidating事件里判断是否关闭窗口导致的事件触发??
2 如何进行强制类型转换,可以举个例子说明吗?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-5-20 16:41:08
地板
dongdonggua 发表于 2016-5-20 13:16
1 如何在cellvalidating事件里判断是否关闭窗口导致的事件触发??
2 如何进行强制类型转换,可以举个例 ...

1. Form关闭事件里添加一个标记,触发的时候设置为true,然后在cellValidating事件里判断这个标记。

2.如下的一些强制转换,你可以根据需求选择
GcNumberCell cell= (this.gcMultiRow1.Template.Row.Cells[0] as GcNumberCell);
或是
GcNumberCell cell= (this.gcMultiRow1[0,0] as GcNumberCell);
或是:
void gcMultiRow1_EditingControlShowing(object sender, GrapeCity.Win.MultiRow.EditingControlShowingEventArgs e)
        {
         GcNumber number=  e.Control as GcNumber;
        }
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
dongdonggua
注册会员   /  发表于:2016-5-20 16:44:58
5#
Alice 发表于 2016-5-20 16:41
1. Form关闭事件里添加一个标记,触发的时候设置为true,然后在cellValidating事件里判断这个标记。

2 ...

谢谢,但是关于第一个问题,点击关闭窗口,MultiRow 的cellvalidating事件先执行,然后才执行Form_Closing事件。不知道您指的Form关闭事件是哪个事件??
回复 使用道具 举报
robert
金牌服务用户   /  发表于:2016-5-23 12:00:47
6#
本帖最后由 robert 于 2016-5-23 12:03 编辑

因为Validating事件是.net对Form的WM_CLOSE消息的封装。来的比较早。没有事件可用。重写Form的WinProc函数可以拿到相关信息。代码如下:

  1.     public partial class Form1 : Form
  2.     {
  3.         bool closing = false;

  4.         const int WM_CLOSE = 0x0010;
  5.         protected override void WndProc(ref Message m)
  6.         {
  7.             if (m.Msg == WM_CLOSE)
  8.             {
  9.                 closing = true;
  10.             }
  11.             base.WndProc(ref m);
  12.         }
  13.     }
复制代码

评分

参与人数 1金币 +999 收起 理由
Alice + 999 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部