2017-07-19 2 views
0

Ich arbeite an C# WinForm.VisibleChanged nicht erhöhen, wenn nicht sichtbar

Ich habe eine benutzerdefinierte UserControl: MyControl : UserControl, INotifyPropertyChanged. Ich habe eine Methode für Ereignis bei Ereignis angebracht VisibleChanged: this.VisibleChanged += new System.EventHandler(this.MyControl_VisibleChanged);

Meine Anwendung hat einige Seiten, jede Seite ist ein Steuerelement wie MyControl. Top of MainWindows enthält Button, um Tab zu wechseln.

Mein Problem ist, dass meine Funktion MyControl_VisibleChanged nur aufgerufen wird, wenn Sicht auf wahr wechselt. Ich fügte einen Test in einer Registerkarte hinzu, um MyControl.Visible zu überprüfen, wenn ich die andere Registerkarte auswähle, MyControl.Visible ist false, aber kein Ereignis wird ausgelöst.

Ich habe versucht, eine neue Eigenschaft zu definieren Sichtbar für dieses Steuerelement, aber Wert wird nie festgelegt, nur der base Wert ist zu ändern.

Können Sie mir helfen, eine Lösung zu finden?

Antwort

1

Dies ist eine Eigenart in der Art Visible funktioniert, explained here. Seine Lösung bestand darin, Eigenschaften zu verwenden, über die er die vollständige Kontrolle hat, aber Sie könnten stattdessen eine Methode verwenden, die es den Tab-Switches erlaubt, ihren Kindern zu sagen, dass sie diese zusätzliche Zeit erhöhen müssen. Die ersten beiden Antworten auf this question können ebenfalls nützlich sein.