首先,我是这个论坛的新手,对编程来说相对较新。 我的问题是我无法分离先前附加的事件处理程序。至少,以下代码中的DetachEventHandler不会这样做:
private void addHandlersToElement(HtmlElement thiselement)
{
thiselement.DetachEventHandler("onclick", delegate { myClickHandler(thiselement, EventArgs.Empty); });
thiselement.AttachEventHandler("onclick", delegate { myClickHandler(thiselement, EventArgs.Empty); });
}
它显然不起作用,因为事件处理程序中的代码执行的次数与我调用 addHandlersToElements 的次数相同,也就是说,附加工作但是分离没有。
事实是,我不太了解委托,只是它们是方法的包装器,可以将它们作为参数传递。我从某篇文章中偷走了这个委托{} 块,因为这似乎是将 thiselement 作为发送者对象传递的唯一解决方案(我在实际中指的是处理程序方法)。使用
new EventHandler(myMouseoverEventHandler)
参数实际上有效,但是,AFAIK,我无法通过发件人。
任何帮助都将不胜感激。
答案 0 :(得分:2)
我认为如果将委托分配给引用,它将解决问题,如下所示:
var del = delegate { myClickHandler(thiselement, EventArgs.Empty); };
然后附加和分离相同的委托对象,而不是附加一个委托并分离另一个委托:
thiselement.AttachEventHandler("onclick", del);
thiselement.DetachEventHandler("onclick", del);