구독 된 eventHandler에 대한 참조를 유지하는 가장 좋은 방법은 사전을 사용하여 수행 할 수 있습니다.
이 예제에서는 익명의 메서드를 사용하여 DataGridViews 집합에 대해 mergeColumn 매개 변수를 포함시켜야합니다.
enable 매개 변수를 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);
}
}
}