2011-12-28 2 views
46

Je crée un événement pour vérifier si une page à onglet spécifique d'un onglet est active. Le point est, il va déclencher un événement si cette page d'onglet dans un contrôle de tabulation est l'onglet actuellement sélectionné. Tout code qui me donnera ce dont j'ai besoin?Vérification de la sélection d'une page à onglet spécifique (active)

+1

Travaillez-vous dans WPF, Windows Forms? –

+0

Il a un 'événement SelectedIndexChanged' pourquoi ne pas vérifier votre onglet spécifique là-bas et faire votre travail – V4Vendetta

+1

@Maxim: Eh oui, Windows Forms: System.Windows.Forms.TabControl et System.Windows.Forms.TabPages. –

Répondre

71

En supposant que vous êtes à la recherche dans Winform, il y a un événement SelectedIndexChanged pour l'onglet

Maintenant à vous pouvez vérifier votre onglet spécifique et procéder à la logique

private void tab1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (tab1.SelectedTab == tab1.TabPages["tabname"])//your specific tabname 
    { 
     // your stuff 
    } 
} 
+0

Merci, c'était la chose que je cherchais. Ce que je ne sais pas, c'est que les TabPages ["tabname"] chose, encore une fois, merci –

+0

Vous pouvez également utiliser la même méthode pour sélectionner l'onglet: 'tab1.SelectedTab = tab1.TabPages [" tabname "]' – SharpC

17

Pour vérifier si un page d'onglet spécifique est la page actuellement sélectionnée d'un contrôle onglet est facile; il suffit d'utiliser la propriété selectedTab du contrôle onglet:

if (tabControl1.SelectedTab == someTabPage) 
{ 
// Do stuff here... 
} 

Ceci est plus utile si le code est exécuté sur la base d'un événement autre que la page d'onglet étant sélectionné (auquel cas SelectedIndexChanged serait un meilleur choix). Par exemple, j'ai une application qui utilise une minuterie pour interroger régulièrement des données sur une connexion TCP/IP, mais pour éviter le trafic TCP/IP inutile, je n'interroge que les éléments qui mettent à jour les contrôles GUI dans la page à onglet sélectionnée.

3

en .Net 4 peut utiliser

if (tabControl1.Controls[5] == tabControl1.SelectedTab) 
       MessageBox.Show("Tab 5 Is Selected"); 

OU

if (tabpage5 == tabControl1.SelectedTab) 
     MessageBox.Show("Tab 5 Is Selected"); 
+1

Moins un: cela n'ajoute rien aux réponses postées des années plus tôt. –

1

Pour quelque raison que ce qui précède ne fonctionnerait pas pour moi. C'est ce qui a fait:

if (tabControl.SelectedTab.Name == "tabName") 
{ 
    .. do stuff 
} 

où tabControl.SelectedTab.Name est l'attribut de nom attribué à la page dans le tabcontrol lui-même.

Questions connexes