2012-03-13 37 views
9

Estoy tratando de desencadenar automáticamente eventos en función de la página de pestañas que se hace clic en el control de pestañas.TabPage Haga clic en Eventos

En el modo de diseño de mi formulario, cuando hago clic en las pestañas, el cuadro de propiedades dice Tabs System.Windows.Forms.TabControl, cualquiera que sea la pestaña seleccionada. Sin embargo, tengo que hacer clic en la página actual, no en la pestaña de la propiedad para cambiar al nombre de las páginas, p. TaskListPage System.Windows.Forms.TabPage.

Mi tabcontrol se llama Pestañas y estaba tratando de probarlo utilizando el siguiente código que se supone que muestra un mensaje basado en la opción de pestaña.

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

Cuando pruebo el código anterior, no ocurre nada.

¡Cualquier ayuda para hacer que los eventos funcionen cuando se hace clic en una pestaña específica sería muy apreciada!

Gracias

Respuesta

13

Parece que usted no tiene que cableada:

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

Hay otros eventos que le puede dar esta información, así: Selected y Selecting.

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

¡Gracias, está trabajando ahora! :) – Rob

+0

Agregaré esto aquí para aquellos que buscan una solución al mismo problema que estaba teniendo. Los eventos no se activan hasta después de que el constructor se haya ejecutado. Incluso agregar manualmente el controlador como sugiere Lars no funciona. Agregue el código que desencadena el evento en un controlador de eventos Load para el formulario. – ensignr

0

Esta primera parte va en el

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

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

Luego abajo en el código regular que simplemente decirle a la que el control debe tener el enfoque después se hace clic en la pestaña. Que en mi procesador de textos, utilicé un cuadro de texto enriquecido y controles de pestañas para simular la cinta de palabras clave. El control de texto enriquecido en mi caso no está en una página de pestaña como mis páginas de ficha cubren quizás 1 o 2 pulgadas en la parte superior del formulario

private void TabControl1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     richTextBox1.Focus(); 
    } 

Esto es lo que llamo mi procesador de textos. Está aquí para cualquiera que quiera usarlo. Larry's Journal

Cuestiones relacionadas