2011-12-28 11 views
46

Robię zdarzenie, aby sprawdzić, czy jest aktywna strona konkretnej karty w kontrolce tabulacji.Sprawdź, czy jest zaznaczona strona konkretnej karty (aktywna)

Chodzi o to, że wywoła zdarzenie, jeśli ta karta w zakładce jest aktualnie wybraną zakładką. Jakiś kod, który da mi to, czego potrzebuję?

+1

Czy pracujesz w WPF, Windows Forms? –

+0

Ma 'zdarzenie SelectedIndexChanged' dlaczego nie sprawdzić swoją kartę konkretnego tam i zrobić swoje prace – V4Vendetta

+1

@Maxim: Tak, Windows Forms: System.Windows.Forms.TabControl i System.Windows.Forms.TabPages. –

Odpowiedz

71

Zakładając szukasz w Winform, istnieje SelectedIndexChanged wydarzenie na karcie

Teraz w niej można sprawdzić na karcie konkretnej i postępować z logiką

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

Dziękuję, to było to, czego szukałem. Co nie wiem, to, że TabPages ["nazwa tabulatora"] jeszcze raz, dziękuję –

+0

Możesz również użyć tej samej metody, aby wybrać zakładkę: tab1.SelectedTab = tab1.TabPages ["nazwa tabulatora"] – SharpC

17

Aby sprawdzić, czy strona konkretnej zakładki jest aktualnie wybraną stroną kontrolki zakładki jest łatwa; po prostu użyć właściwości SelectedTab kontrolki zakładka:

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

To jest bardziej użyteczny, jeśli kod jest wykonywany na podstawie jakiegoś zdarzenia innego niż zakładce wybiera się (w tym przypadku SelectedIndexChanged byłoby lepszym wyborem).

Na przykład mam aplikację, która używa stopera do regularnego odpytywania rzeczy przez połączenie TCP/IP, ale aby uniknąć niepotrzebnego ruchu TCP/IP, odpytuję tylko rzeczy, które aktualizują ustawienia GUI na aktualnie wybranej stronie karty.

3

w .NET 4 mogą korzystać

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

LUB

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

Minus jeden: to nic nie dodaje do odpowiedzi opublikowanych wiele lat wcześniej. –

1

Z jakiegoś powodu powyższa nie będzie działać dla mnie. To, co zrobił:

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

gdzie tabControl.SelectedTab.Name jest atrybut nazwa przypisana do strony w samej TabControl.

Powiązane problemy