IAm*_*00B 11 c# reflection delegates invocation winforms
我在winform上有一个命令按钮.所以,如果我有类似的东西:
myButton.Click += MyHandler1;
myButton.Click += MyHandler2;
myButton.Click += MyHandler3;
如何判断是否已将任何特定的MyHandler添加到Click事件中,以便它不会再添加到我的代码中的其他位置?
我已经阅读了如何使用GetInvocationList()来获取自己的事件信息.但是在尝试使用各种组合获取命令按钮的项目时出错.它说,
"事件'System.Windows.Forms.Control.Click'只能出现在+ =或 - =的左侧."
我错过了什么?
[编辑] - 我想强调艾哈迈德指出的这个问题.这是一个kludge,应该更容易恕我直言,但看起来它可能只是工作.
Paw*_*sen 11
如果您对已添加的处理程序有疑问,请将其删除并重新添加.如果您的处理程序未首先添加,则会忽略您的删除.
myButton.Click -= MyHandler1;
myButton.Click += MyHandler1;
您还可以创建一个附加到事件的方法,并确保代码只运行一次.
private bool handlersAdded;
private void AddHandlers()
{
    if (this.handlersAdded) return;
    myButton.Click += MyHandler1;
    this.handlersAdded = true;
}