CellValidating事件说明
1 我在CellValidating事件中有业务处理,当我光标焦点在MultiRow控件中,直接点击关闭窗口时,还是触发了CellValidating事件,如何设置当直接关闭窗口时不触发CellValidating事件2 我在MultiRow模板中放了一个gcnumber控件,如何获取模板中的gcnumber控件并动态设置gcnumber控件的表示格式。
1.只要离开焦点就会触发CellValidating事件。关闭窗口是焦点离开会触发。
你可以在cellvalidating事件里判断是否是关闭窗口导致事件触发,如果是,就允许关闭窗口。
2.通过Template.Cell可以获取到单元格的控件并设置格式。如果是进入编辑状态,通过Multirow的Editor也可以拿到。
都是需要类型的强制转换。 Alice 发表于 2016-5-20 12:05
1.只要离开焦点就会触发CellValidating事件。关闭窗口是焦点离开会触发。
你可以在cellvalidating事件里判 ...
1 如何在cellvalidating事件里判断是否关闭窗口导致的事件触发??
2 如何进行强制类型转换,可以举个例子说明吗? dongdonggua 发表于 2016-5-20 13:16
1 如何在cellvalidating事件里判断是否关闭窗口导致的事件触发??
2 如何进行强制类型转换,可以举个例 ...
1. Form关闭事件里添加一个标记,触发的时候设置为true,然后在cellValidating事件里判断这个标记。
2.如下的一些强制转换,你可以根据需求选择
GcNumberCell cell= (this.gcMultiRow1.Template.Row.Cells as GcNumberCell);
或是
GcNumberCell cell= (this.gcMultiRow1 as GcNumberCell);
或是:
void gcMultiRow1_EditingControlShowing(object sender, GrapeCity.Win.MultiRow.EditingControlShowingEventArgs e)
{
GcNumber number=e.Control as GcNumber;
} Alice 发表于 2016-5-20 16:41
1. Form关闭事件里添加一个标记,触发的时候设置为true,然后在cellValidating事件里判断这个标记。
2 ...
谢谢,但是关于第一个问题,点击关闭窗口,MultiRow 的cellvalidating事件先执行,然后才执行Form_Closing事件。不知道您指的Form关闭事件是哪个事件?? 本帖最后由 robert 于 2016-5-23 12:03 编辑
因为Validating事件是.net对Form的WM_CLOSE消息的封装。来的比较早。没有事件可用。重写Form的WinProc函数可以拿到相关信息。代码如下:
public partial class Form1 : Form
{
bool closing = false;
const int WM_CLOSE = 0x0010;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_CLOSE)
{
closing = true;
}
base.WndProc(ref m);
}
}
页:
[1]