2016-03-06 2 views
0

Добрый день! Я не знаю, прав ли мой титул. пожалуйста, изменится, если нет: DКак удалить текущий класс, который работает

Во всяком случае, у меня есть 3 Прямоугольники добавлены в List<Rectangle> и загрузить его дал им класс, который имеет событие [Paint/MouseDown/MouseUp/MouseMove] каждый из них.

Теперь в настоящее время работает 3 прямоугольника с классом.

Теперь, когда я удалил 1 Прямоугольник в List<Rectangle> и загрузите его снова, удаленный прямоугольник все еще работает.

Как я могу удалить класс или классы, которые в настоящее время запущены?

спасибо!

ответ

0

нашел решение.

public EventHandlerList DetachEvents(Component obj) 
    { 
     object objNew = obj.GetType().GetConstructor(new Type[] { }).Invoke(new object[] { }); 
     PropertyInfo propEvents = obj.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance); 

     EventHandlerList eventHandlerList_obj = (EventHandlerList)propEvents.GetValue(obj, null); 
     EventHandlerList eventHandlerList_objNew = (EventHandlerList)propEvents.GetValue(objNew, null); 

     eventHandlerList_objNew.AddHandlers(eventHandlerList_obj); 
     eventHandlerList_obj.Dispose(); 

     return eventHandlerList_objNew; 
    } 
+0

с этой ссылкой. stackoverflow.com/questions/91778/how-to-remove-all-event-handlers-from-a-control –

Смежные вопросы