撤销事件

philipsslg 2003-12-12 11:52:32
比如我在程序中定义了一个事件处理函数
this.ComFlower.TextChanged += new System.EventHandler(this.ComFlower_TextChanged);

怎样撤销事件处理函数,就是让ComFlower_TextChanged处理函数无效,
是不是this.ComFlower.TextChanged-=.......,后面怎么写?
...全文
23 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
巍巍清风 2003-12-12
确实是这样撤消的,你检查一下是不是没执行到的缘故。
  • 打赏
  • 举报
回复
philipsslg 2003-12-12
没用,
private void ComFlower_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{

if(e.KeyValue!=40&&e.KeyValue!=38)//e.KeyValue!=13&&
this.ComFlower.TextChanged += new System.EventHandler(this.ComFlower_TextChanged);
if(e.KeyValue==40&&e.KeyValue==38)
this.ComFlower.TextChanged -= new System.EventHandler(this.ComFlower_TextChanged);

}

第一次触发,TextChanged后,用你的方法还是不能撤销
  • 打赏
  • 举报
回复
weifj 2003-12-12
使用如下方法:
this.ComFlower.TextChanged -= new System.EventHandler(this.ComFlower_TextChanged);
我经常遇到类似的问题。
先撤销事件,再进行操作,之后再恢复事件。从而避免引发多余的事件。
  • 打赏
  • 举报
回复
philipsslg 2003-12-12
没人回答?
自己UP一下
  • 打赏
  • 举报
回复
philipsslg 2003-12-12
我刚才累加了,谢谢各位
  • 打赏
  • 举报
回复
柯嘉 2003-12-12
//看这样行不:
while(this.ComFlower.TextChanged != null)
{
this.ComFlower.TextChanged -= new System.EventHandler(this.ComFlower_TextChanged);
}
  • 打赏
  • 举报
回复
weifj 2003-12-12
操作符+=和操作符-=是累加的,当你进行两次+=操作之后,要撤销事件,需要进行两次-=操作。
  • 打赏
  • 举报
回复
weifj 2003-12-12
操作符+=和操作符-=是累加的,例如当你执行两次+=操作后,要想撤销事件,要进行两次-=操作。
  • 打赏
  • 举报
回复
desrie 2003-12-12
&& ??
  • 打赏
  • 举报
回复
philipsslg 2003-12-12
会不会重复撤销有变执行了,我有时可能撤销好几次
  • 打赏
  • 举报
回复
philipsslg 2003-12-12
我再试一试
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.7w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2003-12-12 11:52
社区公告

让您成为最强悍的C#开发者