Sdílet prostřednictvím


události Property-Changed

Pokud chcete, aby ovládací prvek odesílal oznámení, když se změní vlastnost s názvem PropertyName, definujte událost s názvem PropertyNameChanged a metodu s názvem OnPropertyNameChanged, která vyvolá událost. Konvence vytváření názvů ve Windows Forms je připojit slovo Změněno k názvu vlastnosti. Přidružený typ delegáta události pro události změny vlastnosti je EventHandlera datový typ události je EventArgs. Základní třída Control definuje mnoho událostí změny vlastností, takových jako BackColorChanged, BackgroundImageChanged, FontChanged, LocationChangeda další. Základní informace o událostech naleznete v tématu Události a Události v ovládacích prvcích Windows Forms.

Události změny vlastnosti jsou užitečné, protože umožňují uživatelům prvku připojit obslužné rutiny událostí, které na změnu reagují. Pokud váš ovládací prvek vyvolá událost změny vlastnosti a potřebuje na ni reagovat, místo připojení delegáta k události přepište odpovídající metodu OnPropertyNameChanged. Ovládací prvek obvykle reaguje na událost změněnou vlastností tím, že aktualizuje jiné vlastnosti nebo překreslí některé nebo všechny jeho plochy výkresu.

Následující příklad ukazuje, jak vlastní ovládací prvek FlashTrackBar reaguje na některé události změny vlastností, které dědí z Control. Kompletní ukázku najdete v části Jak vytvořit ovládací prvek Windows Forms, který zobrazuje průběh.

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

Viz také