web-dev-qa-db-fra.com

TabPage Click Events

J'essaie de déclencher automatiquement des événements en fonction de la page à onglet sur laquelle est cliqué le contrôle d'onglet.

En mode Création de mon formulaire, lorsque je clique sur les onglets, la boîte de dialogue Propriétés indique Onglets System.Windows.Forms.TabControl, quel que soit l'onglet sélectionné. Cependant, je dois cliquer sur la page réelle, et non sur l'onglet de la propriété, pour changer le nom des pages, par exemple. TaskListPage System.Windows.Forms.TabPage.

Mon tabcontrol s'appelle Tabs et j'essayais de le tester en utilisant le code ci-dessous qui est supposé afficher un message basé sur l'option de tabulation.

 private void Tabs_SelectedIndexChanged(object sender, EventArgs e)

        {
            if (Tabs.SelectedTab == TaskListPage)
            {
                MessageBox.Show("TASK LIST PAGE");
            }
            else if (Tabs.SelectedTab == SchedulePage)
            {
                MessageBox.Show("SCHEDULE PAGE");
            }
        }

Lorsque je teste le code ci-dessus, rien ne se passe.

Toute aide pour faire en sorte que les événements fonctionnent lorsqu'un clic est effectué sur un onglet serait grandement appréciée!

Je vous remercie

11
Rob

On dirait que vous ne l'avez pas câblé:

public Form1() {
  InitializeComponent();    
  Tabs.SelectedIndexChanged += new EventHandler(Tabs_SelectedIndexChanged);
}

D'autres événements peuvent également vous fournir ces informations: Selected et Selecting.

void Tabs_Selected(object sender, TabControlEventArgs e) {
  if (e.TabPage == TaskListPage) {
    // etc
  }
}
17
LarsTech

Cette première partie va dans le 

    public Form1()
    {
// This is near the top of the form 1 code in form1.cs

        InitializeComponent();
        tabControl1.SelectedIndexChanged += new EventHandler(TabControl1_SelectedIndexChanged);
    }

Ensuite, dans votre code habituel, vous indiquez simplement quel contrôle doit avoir le focus après avoir cliqué sur la page à onglet. Dans mon traitement de texte, j'ai utilisé une zone de texte enrichi et des contrôles d'onglet pour simuler le ruban msword. Le contrôle de texte enrichi dans mon cas ne se trouve pas sur une page à onglet car mes pages d'onglets couvrent peut-être 1 ou 2 pouces en haut du formulaire.

private void TabControl1_SelectedIndexChanged(object sender, EventArgs e)
    {

        richTextBox1.Focus();
    }

C'est ce que j'appelle mon traitement de texte. Il est là pour quiconque voudrait l'utiliser. Journal de Larry

0
Larryrl