Události změny vlastnosti

Pokud chcete, aby váš 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ázvemOn PropertyNameChanged, která vyvolá událost. Konvence vytváření názvů v model 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ěněné vlastností je EventHandlera datový typ události je EventArgs. Základní třída Control definuje mnoho událostí změněných vlastností, například 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 model Windows Forms.

Události změněné vlastností jsou užitečné, protože umožňují uživatelům ovládacího prvku připojit obslužné rutiny událostí, které na změnu reagují. Pokud váš ovládací prvek potřebuje reagovat na událost změněnou vlastností, kterou vyvolá, přepište odpovídající Onmetodu PropertyNameChanged místo připojení delegáta k události. 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 FlashTrackBar vlastní ovládací prvek reaguje na některé z událostí změněných vlastností, které dědí z Control. Úplnou ukázku najdete v tématu Postupy: Vytvoření ovládacího prvku model 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é