2010-07-07 1 views
2

Dans mon application actuelle, j'ai un contrôle Tree sur une page d'un TabControl qui se trouve dans un panneau d'un contrôle SplitContainer. Le contrôle d'arborescence peut ainsi être masqué en masquant le panneau SplitContainer ou en basculant vers un autre TabPage dans TabControl.Comment puis-je détecter lorsqu'un contrôle n'est plus visible?

Dans les menus du formulaire, il y a des commandes qui agissent sur le nœud actuellement sélectionné dans l'arborescence. Je ne veux pas que ces options soient activées lorsque l'utilisateur ne peut pas voir ce qui est sélectionné.

Existe-t-il un moyen simple de déterminer quand TreeView est hors de vue sans s'abonner aux événements de TabControl et SplitContainer séparément?

Répondre

1

Vous pouvez créer une variable de membre booléenne. Dans l'événement tabchanged, testez pour voir si l'onglet TreeView est sélectionné et définissez la variable de manière appropriée. En outre, abonnez-vous à l'événement déclenché lorsque la taille de la vue du séparateur est modifiée. Testez la largeur ou la hauteur du séparateur pour voir si votre arborescence est masquée. Si c'est le cas, définissez la variable ici à. Ensuite, tout ce que vous devez faire est de tester votre nouvelle variable membre.

0

Testez la propriété Visible de TreeView. Il existe également un événement VisibleChanged.

0
if(!myControl.Visible) 
{ 
    // Control is not visible. 
} 

ou

if(myControl.Visible == false) 
{ 
    // Control is not visible. 
} 

Ou, probablement la meilleure option serait d'ajouter un gestionnaire à l'événement VisibleChanged, dans le code (ou en utilisant l'onglet Événements en mode Designer):

void myControl_VisibleChanged(object sender, EventArgs e) 
{ 
      TreeView tView = sender as TreeView ; 
      if (tView.Visible) 
      { 
        // Do something. 
      } 
      else 
      { 
       // Do something. 
      } 
} 
Questions connexes