En iyi yol, abone olunan eventHandler üzerinde bir referans tutmaksa, bu bir Sözlük kullanılarak gerçekleştirilebilir.
Bu örnekte, DataGridViews kümesi için mergeColumn parametresini dahil etmek için anonim bir yöntem kullanmam gerekiyor.
Enable parametresi true olarak ayarlanmışken MergeColumn yönteminin kullanılması, olayı false ile kullanırken etkinleştirme özelliğini devre dışı bırakır.
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);
}
}
}