正確分離EventHandler與事件有一個小問題。以下是我與合作:分離事件(C#)
在的UIButton:
public void HookEvent(Action<object, EventArgs> action)
{
Click += new EventHandler(action);
}
public void UnhookEvent(Action<object, EventArgs> action)
{
Click -= new EventHandler(action);
}
在主營:
UIButton button = new Button();
button.HookEvent(OnButtonClick);
button.UnhookEvent(OnButtonClick);
正在被鉤住的功能:
public void OnButtonClick(object sender, EventArgs e)
{
throw new Exception("Event Fired");
}
利用這一點,如果我將Unhook行註釋掉,然後調用Exception。但是,如果我按照上圖所示將Unhook保留在那裏,該功能仍會激活。它不會解開它。如果我在Click -= new EventHandler(action);
部分下面添加Click = null;
,則它按預期工作。這樣做會導致只允許一個函數在任何給定的時間被掛鉤。
我什麼可能會發生唯一的想法是,功能的新版本正在傳遞,因爲我用行動<>工作,但很可惜我甚至嘗試存儲該功能按鈕中的變量,當我去刪除它,if(storedAction == passedInAction)
結果是真實的。我不知道爲什麼這不會爲我分離。
感謝您的時間夥伴!
我會分開事件訂閱/取消訂閱觸發不同的事件first..to我一個按鈕點擊調用這兩個事件處理程序混淆 –
爲什麼這些函數('HookEvent','UnhookEvent')實際上增加了只是讓 - 調用者直接使用'+ ='(**標準**)語法來訂閱事件? –
「新的Button()」永遠不會正確。您將需要使用正確的按鈕控件引用,而不是從頭創建一個新的。 –