KeyUp-触发两次
本文关键字:两次 KeyUp- | 更新日期: 2023-09-27 18:00:58
在调用KeyUp和KeyDown事件时出现了两次触发的问题。终于找到了解决方案:
this.glControl1.KeyUp -= this.glControl1_KeyUp;
this.glControl1.KeyUp += new KeyEventHandler(this.glControl1_KeyUp);
它有效,但我真的不明白为什么。有人能给我解释一下吗。
感谢
您可能有一些重复的事件,您可以将其用作连接事件处理程序的触发器,一个经典的例子是按钮单击,例如
public void ButtonClick(object sender, EventArgs e)
{
this.SomeControl.KeyUp += this.SomeHandler;
}
这里的问题是,每次单击按钮时,都会将同一事件处理程序分配给同一事件,没有什么可以阻止这种情况的发生,因为在某些情况下这是完全可以接受的。
为了避免这种情况,您需要在重新分配事件处理程序之前取消挂起它,这就是为什么执行以下代码行
this.SomeControl.KeyUp -= this.SomeHandler;
在分配之前,事件处理程序可防止重复调用。