如果最好的辦法就是保持對訂閱的事件處理程序的參考,這可以使用來實現一本字典。
在這個例子中,我必須使用匿名方法來包含一組DataGridView的mergeColumn參數。
在啓用參數設置爲true的情況下使用MergeColumn方法時,使用false時禁用該事件會啓用該事件。
static Dictionary<DataGridView, PaintEventHandler> subscriptions = new Dictionary<DataGridView, PaintEventHandler>();
public static void MergeColumns(this DataGridView dg, bool enable, params ColumnGroup[] mergedColumns) {
if(enable) {
subscriptions[dg] = (s, e) => Dg_Paint(s, e, mergedColumns);
dg.Paint += subscriptions[dg];
}
else {
if(subscriptions.ContainsKey(dg)) {
dg.Paint -= subscriptions[dg];
subscriptions.Remove(dg);
}
}
}
至於*爲什麼*你不能這樣做:http://stackoverflow.com/a/25564492/23354 – 2014-08-29 08:50:52