Если лучший способ - сохранить ссылку на подписанный 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);
}
}
}