Re: А еще можно так... :)
От: ppti  
Дата: 04.10.06 05:28
Оценка:
Здравствуйте, 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
хорошо там где нас нет. но мы есть везде.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.