撤销事件

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

怎样撤销事件处理函数,就是让ComFlower_TextChanged处理函数无效,
是不是this.ComFlower.TextChanged-=.......,后面怎么写?
...全文
78 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
巍巍清风 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
  • 打赏
  • 举报
回复
我再试一试

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧