첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

■ Control 클래스를 사용해 컨트롤 이벤트를 제거하는 방법을 보여준다.

 

▶ 예제 코드 (C#)

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
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요