2011-12-28 74 views
46

Estoy haciendo un evento para verificar si la pestaña específica en un control de pestañas está activa.Verificar si se selecciona una página de pestañas específica (activa)

El punto es que desencadenará un evento si esa página de pestañas en un control de pestañas es la pestaña actualmente seleccionada. ¿Algún código que me dará lo que necesito?

+1

¿Está trabajando en WPF, Windows Forms? –

+0

Tiene un evento 'SelectedIndexChanged' por qué no comprobar su pestaña específica allí y hacer su trabajo – V4Vendetta

+1

@Maxim: Sí, Windows Forms: System.Windows.Forms.TabControl y System.Windows.Forms.TabPages. –

Respuesta

71

Suponiendo que busca en Winform, hay un evento SelectedIndexChanged para la ficha

Ahora en ella se puede comprobar para su pestaña específica y proceder con la lógica

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

Gracias, esto es lo que he estado buscando. Lo que no sé es que la cosa TabPages ["tabname"], una vez más, gracias –

+0

También puede utilizar el mismo método para seleccionar la pestaña: 'tab1.SelectedTab = tab1.TabPages [" tabname "]' – SharpC

17

para comprobar si una página de pestañas específicas es la página seleccionada actualmente de un control de pestañas es fácil; sólo tiene que utilizar la propiedad selectedTab del control de ficha:

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

Esto es más útil si el código se ejecuta en base a algún evento que no sea la etiqueta de ser seleccionado (en cuyo caso SelectedIndexChanged sería una mejor opción).

Por ejemplo, tengo una aplicación que usa un temporizador para sondear cosas regularmente a través de una conexión TCP/IP, pero para evitar el tráfico TCP/IP innecesario solo sondear cosas que actualizan los controles de GUI en la página de pestañas seleccionada actualmente.

3

en .Net 4 puede utilizar

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

O

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

Menos uno: esto no agrega nada a las respuestas publicadas años antes. –

1

Por alguna razón lo anterior no funcionaría para mí. Esto es lo que hizo:

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

donde tabControl.SelectedTab.Name es el atributo de nombre asignado a la página en la propia tabcontrol.

Cuestiones relacionadas