首先使用了C1TrueDBGrid这个控件。
你要实现的功能是,在C1TrueDBGrid的单元格输入产品编码,按回车出来选择产品的模式窗口。选择数据后返回结果。
现在的问题是这个模式窗口有的时候打开两次,测试了好久,没有固定的条件。就是偶尔会出现。
事件委托是自己在代码里写的。
this.AfterColEdit -= new C1.Win.C1TrueDBGrid.ColEventHandler(NewDataGrid_AfterColEdit); this.AfterColEdit += new C1.Win.C1TrueDBGrid.ColEventHandler(NewDataGrid_AfterColEdit);
void NewDataGrid_AfterColEdit(object sender, C1.Win.C1TrueDBGrid.ColEventArgs e) {
From pop = new From();
if (pop.ShowDialog() == DialogResult.OK) {
/
}
}
8 个解决方案
#1
可能是你引用第三方控件的问题,我也遇到过!
#2
我也遇到过模式窗口出现多次的情况,那是因为for循环里面嵌套了if...else语句,改正方法是在循环for外设一个boolean参数,另外在再用一个if语句
#3
先用你的办法试试,看还会不会出现。
我开始是怀疑NewDataGrid_AfterColEdit被调用了多次,
#4
NewDataGrid_AfterColEdit
被多次触发导致
被多次触发导致
#5
要怎么避免中呢?
#6
能解释一下吗。有朋友告诉我是用"+="委托事件引起多次触发,可我不理解。
#7
可能性有多个,这里条件不足,无法判断。
可能是:
一、事件执行中又无意中触发了事件本身,解决方法是事件执行代码中(-=)将事件先屏蔽,执行后(+=)重新启用。
二、事件源头可能会触发多次,解决方法是,配合其它事件来组合触发条件,或者直接更换事件。
可能是:
一、事件执行中又无意中触发了事件本身,解决方法是事件执行代码中(-=)将事件先屏蔽,执行后(+=)重新启用。
二、事件源头可能会触发多次,解决方法是,配合其它事件来组合触发条件,或者直接更换事件。
#8
按回车出来选择产品的模式窗口
------------------------
解决问题的办法还得从源头找
你得控制只在按回车的时候 才触发相关事件
------------------------
解决问题的办法还得从源头找
你得控制只在按回车的时候 才触发相关事件
#1
可能是你引用第三方控件的问题,我也遇到过!
#2
我也遇到过模式窗口出现多次的情况,那是因为for循环里面嵌套了if...else语句,改正方法是在循环for外设一个boolean参数,另外在再用一个if语句
#3
先用你的办法试试,看还会不会出现。
我开始是怀疑NewDataGrid_AfterColEdit被调用了多次,
#4
NewDataGrid_AfterColEdit
被多次触发导致
被多次触发导致
#5
要怎么避免中呢?
#6
能解释一下吗。有朋友告诉我是用"+="委托事件引起多次触发,可我不理解。
#7
可能性有多个,这里条件不足,无法判断。
可能是:
一、事件执行中又无意中触发了事件本身,解决方法是事件执行代码中(-=)将事件先屏蔽,执行后(+=)重新启用。
二、事件源头可能会触发多次,解决方法是,配合其它事件来组合触发条件,或者直接更换事件。
可能是:
一、事件执行中又无意中触发了事件本身,解决方法是事件执行代码中(-=)将事件先屏蔽,执行后(+=)重新启用。
二、事件源头可能会触发多次,解决方法是,配合其它事件来组合触发条件,或者直接更换事件。
#8
按回车出来选择产品的模式窗口
------------------------
解决问题的办法还得从源头找
你得控制只在按回车的时候 才触发相关事件
------------------------
解决问题的办法还得从源头找
你得控制只在按回车的时候 才触发相关事件