속성 변경 이벤트

PropertyName이라는 속성이 변경될 때 컨트롤이 알림을 보내도록 하려면 PropertyNameChanged이라는 이벤트와 이벤트를 발생시키는 OnPropertyNameChanged이라는 메서드를 정의합니다. Windows Forms 명명 규칙에 따르면 속성 이름에 Changed라는 단어를 추가합니다. 속성 변경 이벤트에 대한 연결된 이벤트 대리자 형식은 EventHandler이고, 이벤트 데이터 형식은 EventArgs입니다. 기본 클래스 Control는 많은 속성 변경 이벤트(예: BackColorChanged, BackgroundImageChanged, FontChanged, LocationChanged등)를 정의합니다. 이벤트에 대한 배경 정보는 이벤트Windows Forms 컨트롤의 이벤트를 참조하세요.

속성 변경 이벤트는 컨트롤의 소비자가 변경에 응답하는 이벤트 처리기를 연결할 수 있기 때문에 유용합니다. 컨트롤이 발생하는 속성 변경 이벤트에 응답해야 하는 경우 이벤트에 대리자를 연결하는 대신 해당 OnPropertyNameChanged 메서드를 재정의합니다. 컨트롤은 일반적으로 다른 속성을 업데이트하거나 그리기 표면의 일부 또는 전체를 다시 그려서 속성 변경 이벤트에 응답합니다.

다음 예제에서는 FlashTrackBar 사용자 지정 컨트롤이 Control에서 상속하는 속성 변경 이벤트 중 일부에 응답하는 방법을 보여 줍니다. 전체 예제는 방법: 진행률을 보여 주는 Windows Forms 컨트롤 만들기를 참조하세요.

protected override void OnTextChanged(EventArgs e) {
    base.OnTextChanged(e);
    Invalidate();
}

protected override void OnBackColorChanged(EventArgs e) {
    base.OnBackColorChanged(e);
    if ((baseBackground != null) && (!showGradient)) {
                baseBackground.Dispose();
                baseBackground = null;
    }
}
Protected Overrides Sub OnTextChanged(ByVal E As EventArgs)
    MyBase.OnTextChanged(E)
    Invalidate()
End Sub

Protected Overrides Sub OnBackColorChanged(ByVal E As EventArgs)
    MyBase.OnBackColorChanged(E)
    If (baseBackground IsNot Nothing) And Not ShowGradient Then
        baseBackground.Dispose()
        baseBackground = Nothing
    End If
End Sub

참조