Compartilhar via


Eventos alterados por propriedade

Se você quiser que o controle envie notificações quando uma propriedade chamada PropertyName mudar, defina um evento chamado PropertyNameChanged e um método chamado OnPropertyNameChanged que gera o evento. A convenção de nomenclatura nos Windows Forms é acrescentar a palavra Changed ao nome da propriedade. O tipo de delegado de evento associado para eventos alterados por propriedade é , e o tipo de dados de evento é EventHandlerEventArgs. A classe Control base define muitos eventos alterados por propriedade, como BackColorChanged, , FontChangedBackgroundImageChanged, LocationChangede outros. Para obter informações secundárias sobre eventos, consulte Eventos e Eventos em controles dos Windows Forms.

Eventos de propriedade alterada são úteis porque permitem que os consumidores de um controle anexem manipuladores de eventos que respondem à alteração. Se o seu controle precisa responder a um evento de propriedade alterada que ele emitirá, substitua o método OnPropertyNameChanged correspondente em vez de associar um delegado ao evento. Um controle normalmente responde a um evento de propriedade alterada atualizando outras propriedades ou redesenhando a superfície de alguns ou todos os desenhos.

O exemplo a seguir mostra como o controle personalizado responde a FlashTrackBar alguns dos eventos de propriedade alterada que ele herda do Control. Para um exemplo completo, consulte Como criar um controle dos Windows Forms que mostre o progresso.

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

Confira também