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