web-dev-qa-db-fra.com

Vérifier si une page à onglet spécifique est sélectionnée (active)

Je crée un événement pour vérifier si une page à onglet spécifique dans un contrôle d'onglet est active.

Le fait est que cela déclenchera un événement si la page à onglet d'un contrôle d'onglet est l'onglet actuellement sélectionné. Un code qui me donnera ce dont j'ai besoin?

52
Naufal Fikri

En supposant que vous cherchiez dans Winform, il y a un événement SelectedIndexChanged pour l'onglet

Maintenant, vous pouvez vérifier votre onglet spécifique et poursuivre avec la logique

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

Pour vérifier si une page à onglet spécifique est la page actuellement sélectionnée d'un contrôle onglet, rien de plus simple; utilisez simplement 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é en fonction d'un événement autre que la page à onglet sélectionnée (dans ce cas, SelectedIndexChanged serait un meilleur choix).

Par exemple, j'ai une application qui utilise une minuterie pour interroger régulièrement des éléments via une connexion TCP/IP, mais pour éviter le trafic TCP/IP inutile, je n'interroge que les éléments mettant à jour les contrôles de l'interface graphique dans la page à onglet actuellement sélectionnée.

22
Jakob

en .Net 4 peut utiliser

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

OR

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

Je pense qu'en utilisant l'événement tabPage1.Enter est plus pratique.

tabPage1.Enter += new System.EventHandler(tabPage1_Enter);

private void tabPage1_Enter(object sender, EventArgs e)
{
    MessageBox.Show("you entered tabPage1");
}

C'est mieux que d'avoir une instruction if-else imbriquée lorsque vous avez une logique différente pour différents onglets. Et plus approprié au cas où de nouveaux onglets pourraient être ajoutés à l'avenir.

Notez que cet événement se déclenche si le formulaire est chargé et tabPage1 est ouvert par défaut.

1
fresher96

Pour une raison quelconque, 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 contrôle de tabulation lui-même.

1
DaBlue