Якщо найкращим способом є збереження посилання на підписаний eventHandler, цього можна досягти, використовуючи словник.
У цьому прикладі я повинен використовувати анонімний метод, щоб включити параметр mergeColumn для набору DataGridViews.
Використання методу MergeColumn з параметром включення, встановленим на істинне, дозволяє події під час використання з помилковим відключенням.
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);
}
}
}