Estoy construyendo una aplicación Windows Forms en C#. ¿Cómo disparo el código cuando se selecciona una determinada pestaña en un menú de pestañas?Evento de Windows Forms "¿En la pestaña Seleccionar"?
Respuesta
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.");
}
¿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
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
.
- TabControl.TabPages.Add();
- TabControl.TabPages.Contains();
- TabControl.TabPages.ContainsKey();
- TabControl.TabPages.Insert();
- TabControl.TabPages.Remove();
- TabControl.TabPages.RemoveAt();
- 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
.
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
Consulte mi edición para obtener una respuesta a esta pregunta comentada. =) –
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");
}
Funciona solo cuando también se hace clic en el formulario de pestaña. ¡Son 2 clics con el clic de cambio! – Bytemain
- 1. Windows Forms: Evento SelectionChanged para la clase TextBox
- 2. ¿Cómo imitar el evento onBlur de JavaScript en Windows Forms?
- 3. evento Click para .Net (Windows Forms) control de usuario
- 4. .NET Windows Forms: interceptando el evento Close X
- 5. Fuente predeterminada para la aplicación Windows Forms
- 6. llamadas multihilo en la aplicación Windows Forms?
- 7. Tab Index en Windows Forms
- 8. Windows Forms: capturar MouseWheel
- 9. ¿Evita el parpadeo en Windows Forms?
- 10. Borrando DrawRectangle en Windows Forms
- 11. Windows Forms Separator Control
- 12. WPF o Windows Forms
- 13. Windows Forms - ErrorProvider + DataGridView
- 14. ProgressBar es lenta en Windows Forms
- 15. Parpadeo en una aplicación de Windows Forms
- 16. aplicación Windows Forms, cómo comunicarse entre controles personalizados?
- 17. Mapas con la aplicación Windows Forms
- 18. wxpython auinotebook cerrar pestaña evento
- 19. Barras de menú estándar de Windows en Windows Forms
- 20. Learning Windows Forms vs. Windows Presentation Foundation
- 21. Interfaz web para la aplicación Windows Forms
- 22. Barra de estado en C# Windows Forms
- 23. Error muy molesto con la propiedad TopMost en Windows Forms
- 24. Windows Forms and ShowDialog problema
- 25. Restore C# Windows Forms backcolor
- 26. Jump Lists y Windows Forms
- 27. WPF con Windows Forms - STAThread
- 28. Windows Forms - Multiple Event Loops
- 29. Tecla de acceso rápido (no global) en Windows Forms .NET
- 30. Comandos de Windows Forms + desde la consola en C#
Te refieres a Tab Menu, TabControl, ¿no es así? –
'tabControl.TabPages [tabControl.SelectedIndex]' le da la 'TabPage' en ese índice. –