Özellik Değişti Olayları

PropertyName adlı bir özellik değiştiğinde denetiminizin bildirim göndermesini istiyorsanız PropertyNameChanged adlı bir olay ve olayı tetikleyen PropertyNameChanged adlı Onbir yöntem tanımlayın. Windows Forms'daki adlandırma kuralı, özelliğin adına Changed sözcüğünü eklemektir. Özellik tarafından değiştirilen olaylar için ilişkili olay temsilcisi türü, EventHandlerolay veri türü ise şeklindedir EventArgs. Temel sınıfControl, , BackgroundImageChanged, FontChangedLocationChanged, ve diğerleri gibi BackColorChangedbirçok özellik tarafından değiştirilen olayı tanımlar. Olaylar hakkında arka plan bilgileri için bkz. Windows Forms Denetimlerinde Olaylar ve Olaylar.

Özellik değiştirme olayları, denetimin tüketicilerinin değişikliğe yanıt veren olay işleyicileri eklemesine olanak sağladığından yararlıdır. Denetiminizin tetiklediği özellik değiştirme olayına yanıt vermesi gerekiyorsa, olaya temsilci eklemek yerine ilgili OnPropertyNameChanged yöntemini geçersiz kılın. Denetim genellikle diğer özellikleri güncelleştirerek veya çizim yüzeyinin bir bölümünü veya tümünü yeniden çizerek özellik tarafından değiştirilen bir olaya yanıt verir.

Aşağıdaki örnekte, özel denetimin FlashTrackBar öğesinden Controldevraldığı bazı özellik değişikliği olaylarına nasıl yanıt verdiği gösterilmektedir. Örneğin tamamı için bkz . Nasıl yapılır: İlerleme Durumunu Gösteren Bir Windows Forms Denetimi Oluşturma.

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

Ayrıca bkz.