Если лучший способ сохранить ссылку на подписанный eventHandler, это может быть достигнуто с помощью словаря.
В этом примере я должен использовать анонимный метод для включения параметра mergeColumn для набор DataGridViews.
Использование метода MergeColumn с параметром enable, установленным в true, позволяет событию при его использовании с 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);
}
}
}