2
我創建了一個可以像我想要的那樣工作的擴展方法。我注意到,party
和property
參數被「複製」到lambda表達式中。這樣我就不需要維護編輯/派對/屬性關聯的自定義列表。重寫lambda擴展方法
但是,我需要重置ButtonEdit的ButtonClick事件。既然這個是匿名的,我也不能使用 - = opertor。
所以,我的問題是 - 我該如何重寫此方法,以便委託可以被刪除?或者,我可以使用其他方法處理具有額外參數的特定事件處理程序(如party
和property
)?
private static void SetupAddressButtonClickEvent(this ButtonEdit editor, Party party, string property)
{
editor.SetAddressDisplayText(party, property);
editor.ButtonClick += (sender, e) =>
{
party.ShowAddressLookupDialog(property);
editor.SetAddressDisplayText(party, property);
};
}
謝謝 斯特凡
所以我需要在內部存儲ButtonEdit/Action關聯列表? – Stefan 2010-01-29 08:46:30
我不知道您在何處嘗試刪除該操作,因此無法真正幫助您刪除該操作。你是否試圖在另一個點擊處理程序中刪除它? – 2010-01-29 09:00:23
在重新綁定窗體上的控件之前,我刪除了事件處理程序。如果我不重置它,事件處理程序將引用一個已處理的對象。儘管你的選擇2看起來很有趣。這種方法有一個名字嗎? – Stefan 2010-01-29 09:12:25