2017-07-19 1 views
0

Je travaille sur C# WinForm.VisibleChanged ne lève pas lorsqu'il n'est pas visible

J'ai un UserControl personnalisé: MyControl : UserControl, INotifyPropertyChanged. J'ai attaché une méthode sur l'événement sur l'événement VisibleChanged: this.VisibleChanged += new System.EventHandler(this.MyControl_VisibleChanged);

Mon application a quelques pages, chaque page est un contrôle comme MyControl. Top of MainWindows contient Button, utilisé pour changer d'onglet.

Mon problème est que ma fonction MyControl_VisibleChanged est appelée uniquement lorsque Visible devient true. J'ai ajouté un test dans un onglet pour vérifier MyControl.Visible, lorsque je sélectionne l'autre onglet, MyControl.Visible est false mais aucun événement n'est déclenché.

J'ai essayé de définir une nouvelle propriété Visible pour ce contrôle mais la valeur n'est jamais définie, seule la valeur base est modifiée.

Pouvez-vous m'aider à trouver une solution?

Répondre

1

Il s'agit d'une anomalie de la façon Visible fonctionne, explained here. Sa solution consistait à utiliser les propriétés sur lesquelles il avait un contrôle total, mais vous pouviez avoir une méthode permettant aux commutateurs d'onglet de dire à leurs enfants d'augmenter leur événement VisibleChanged pendant ce temps supplémentaire.

Les deux premières réponses à this question peuvent également être utiles.