Здравствуйте, Streamer1, Вы писали:
S>а можно еще так:
S>S> internal void ClearEvent()
S> {
S> foreach(EventHandler eh in Event.GetInvocationList())
S> Event -= eh;
S> }
S>}
S>
согласен, но это заставляет перелопатить весь код с событиями.
Есть ведь способ написать одну процедуру для всех событий сразу?
типа
//получаем событие по строке
public void RemoveHandlersFromEvent(string ANameEvent)
{
//получаем список всех событий
Type t = typeof(TOLAPGrid);
EventInfo[] EI = t.GetEvents();
foreach (EventInfo E in EI)
{
// нашли нужное событие
if (E.Name == ANameEvent)
{
//могу удалить делегата из события:
E.RemoveEventHandler( событие, делегат);
//могу получить метод для удаления методов:
MethodInfo MI = E.GetRemoveMethod();
//и вызвать его
MI.Invoke(this, new object[1]);
}
}
}
как это не смешно, но дальше ступор и не понимаю где взять ссылку на найденное событие
и ссылку на делегат, который в этом событии есть. Не возможность запустить делегат события методом
invoke, а подствить его в конструкцию
Event -= eh
хорошо там где нас нет. но мы есть везде.