Vérifiez si une page d’onglet spécifique est sélectionnée (active)

Je fais un événement pour vérifier si une page d’onglet spécifique dans un contrôle d’onglet est active.

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

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

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

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

Pour vérifier si une page d’onglet spécifique est la page actuellement sélectionnée d’un contrôle d’onglet est facile; 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 (auquel cas SelectedIndexChanged serait un meilleur choix).

Par exemple, j’ai une application qui utilise un minuteur pour interroger régulièrement des trucs sur une connexion TCP / IP, mais pour éviter le trafic TCP / IP inutile, je ne fais qu’interroger les éléments qui mettent à jour les contrôles GUI dans la page à onglet sélectionnée.

dans .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"); 

Pour quelque raison que ce soit, 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’atsortingbut name atsortingbué à la page dans le contrôle tabulaire lui-même.

Je pense que l’utilisation de 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 nestede lorsque vous avez une logique différente pour les différents tabs. Et plus approprié au cas où de nouveaux tabs pourraient être ajoutés dans le futur.

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