【发布时间】:2013-04-03 21:36:04
【问题描述】:
MouseEventArgs 是否有等效于执行 e.Handled 的方法?我遇到了一个问题,我的事件处理程序在同一个对象上触发了两次。我单击对象(一个按钮),它运行应该删除按钮的代码。我一步一步地通过,因为它删除了按钮。但随后它再次运行!我检查了发件人——它的(据说被删除了!)按钮 0_o。
private void InTrayButton_MouseUp(object sender, MouseEventArgs e)
{
Button button = (Button)sender;
int element = 0;
//Find the index of the button in the list
foreach (ButtonList a in buttonList)
{
if (button == a.buttonSaved)
break;
element++;
}
//Remove the button
this.Controls.Remove(buttonList[element].buttonSaved);
buttonList[element].buttonSaved.Dispose();
buttonList.Remove(buttonList[element]);
}
任何人对我如何强制它停止两次停止有任何想法?无论我将其设置为 mouseup 还是 click 事件都没有关系,它每次都会触发两次 >_>
【问题讨论】:
-
事件是多播的;你确定你没有不止一次连接过一个处理程序(甚至你的情况下是同一个处理程序)吗?
-
我认为仅仅试图隐藏处理程序被调用两次的事实是错误的心态。它被调用两次是有原因的,最好让你找到原因。
-
这回答了我的问题!果然,我在一个最终被多次调用的地方添加了事件处理程序。非常感谢你!如果你把它作为答案,那么在 10 分钟内我会选择它!
-
杰西-你说得对。我忽略了大约 30 分钟的原因并点击了“我不在乎,我只是想让它工作!”观点。我很高兴这次成功了,但下一次我会更好地专注于原因而不是解决方法!
标签: c# event-handling