■ Control 클래스를 사용해 컨트롤 이벤트를 제거하는 방법을 보여준다.
▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System.ComponentModel; using System.Reflection; using System.Windows.Forms; #region 이벤트 제거하기 - RemoveEvent(targetControl, eventName) /// <summary> /// 이벤트 제거하기 /// </summary> /// <param name="targetControl">타겟 컨트롤</param> /// <param name="eventName">이벤트명</param> public void RemoveEvent(Control targetControl, string eventName) { FieldInfo fieldInfo = typeof(Control).GetField(eventName, BindingFlags.Static | BindingFlags.NonPublic); PropertyInfo propertyInfo = targetControl.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance); object fieldValue = fieldInfo.GetValue(targetControl); EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(targetControl, null); eventHandlerList.RemoveHandler(fieldValue, eventHandlerList[fieldValue]); } #endregion |