2010-05-27 15 views

Respuesta

30

Creo que es el evento TabControl.SelectedIndexChanged.

Basta con mirar MSDN. Lo tomé desde allí. Supongamos que nombra su control de pestaña tabControl1. debe suscribirse a este evento usando:

tabContrl1.TabControl.SelectedIndexChanged += tabControl1_SelectedIndexChanged; 

Y agregar el controlador de eventos

private void tabControl1_SelectedIndexChanged(Object sender, EventArgs e) { 

    MessageBox.Show("You are in the TabControl.SelectedIndexChanged event."); 
} 
+0

¿Puede darme un ejemplo de esta línea de código que se utiliza en un programa de ejemplo? Simplemente no sé qué hacer con el código que me diste, ¡gracias! – sooprise

1

Compruebe si este helps usted. "SelectedIndexChanged" podría ayudarlo.

detalles de MSDN son here

13

El TabControl y su caso SelectedIndexChanged hará lo que usted necesita.

Por ejemplo, tiene un archivo de cliente con un TabControl en la parte de detalles del formulario. Desea cargar cargas perezosas de este cliente cuando el usuario hace clic en las Transacciones TabPage. El código debería tener este aspecto pseudo-código:

public partial class CustomerMgmtForm : Form { 
    // Assuming the design already done, so the TabControl control exists on your form. 
    public CustomerMgmtForm() { 
     tabControl1.SelectedIndexChanged += new EventHandler(tabControl1_SelectedIndexChanged); 
    } 

    private void tabControl1_SelectedIndexchanged(object sender, EventArgs e) { 
     switch((sender as TabControl).SelectedIndex) { 
      case 0: 
       // Do nothing here (let's suppose that TabPage index 0 is the address information which is already loaded. 
       break; 
      case 1: 
       // Let's suppose TabPage index 1 is the one for the transactions. 
       // Assuming you have put a DataGridView control so that the transactions can be listed. 
       // currentCustomer.Id can be obtained through the CurrencyManager of your BindingSource object used to data bind your data to your Windows form controls. 
       dataGridview1.DataSource = GetTransactions(currentCustomer.Id); 
       break; 
     } 
    } 
} 

La siguiente también son útiles cuando jugaba con el TabControl.

  1. TabControl.TabPages.Add();
  2. TabControl.TabPages.Contains();
  3. TabControl.TabPages.ContainsKey();
  4. TabControl.TabPages.Insert();
  5. TabControl.TabPages.Remove();
  6. TabControl.TabPages.RemoveAt();
  7. TabControl.TabPages.RemoveByKey().

Uso del TabControl.TabPageCollection Members.

editar # 1

Para seleccionar una ficha específica, sólo puede ser identificado por 0, 1, 2, y no el nombre de la ficha?

Sí, que también podría aumentar o disminuir la propiedad TabControl.SelectedIndex para hacer una específica TabPage seleccionado/activo.

Sin embargo, una cosa es asegurarse de no indexar TabPage del TabPages.Count - 1, ya que el índice de inicio es 0, de lo contrario obtendrá un IndexOutOfRangeException lanzado.

Para continuar con nuestro ejemplo, donde tenemos dos páginas, la información de la dirección y de las transacciones:

// Will automatically change the selected tab to the Transactions TabPage. 
tabControl1.SelectedIndex = 1; 

// Considering there a count of two TabPages, the first is indexed at 0, and the second at 1. 
// Setting the SelectedIndex property to 2 will throw. 
tabControl1.SelectedIndex = 2; 

Nota: Cualquier cambio en la propiedad TabControl.SelectedIndex desencadenará el evento TabControl.SelectedIndexChanged.

+0

Para seleccionar una pestaña específica, solo se puede identificar por 0, 1, 2 y no por el nombre de la pestaña? – sooprise

+0

Consulte mi edición para obtener una respuesta a esta pregunta comentada. =) –

4

Para seleccionar una pestaña específica, ¿solo se puede identificar por 0, 1, 2 y no por el nombre de la pestaña?

Puede hacerlo agregando el detector de eventos a la pestaña real en lugar de al control de pestañas.

Si tiene una pestaña llamada tabHistory, puede agregar la siguiente línea en el diseñador.

this.tabHistory.Enter += new System.EventHandler(this.tabHistory_Enter); 

Luego solo agregue su método para atrapar el evento.

private void tabHistory_Enter(object sender, EventArgs e) 
{ 
    MessageBox.Show("Hey! Ive got focus"); 
} 
+0

Funciona solo cuando también se hace clic en el formulario de pestaña. ¡Son 2 clics con el clic de cambio! – Bytemain

Cuestiones relacionadas