usar pestañas como c# .net winforms focus

pestañas - como usar tabcontrol c#



Winforms c#: establece el foco en el primer control secundario de TabPage (6)

Digamos que tengo un Textbox anidado dentro de un TabControl .

Cuando se carga el formulario, me gustaría centrarme en ese Textbox (de manera predeterminada, el foco se establece en TabControl ).

Simplemente llamando a textbox1.focus() en el evento Load del formulario no parece funcionar.

Pude enfocarlo haciendo lo siguiente:

private void frmMainLoad(object sender, EventArgs e) { foreach (TabPage tab in this.tabControl1.TabPages) { this.tabControl1.SelectedTab = tab; } }

Mi pregunta es:

¿Hay una manera más elegante de hacer esto?


La siguiente es la solución:

private void frmMainLoad(object sender, EventArgs e) { ActiveControl = textBox1; }

La mejor pregunta sería, sin embargo, por qué ... No estoy del todo seguro de cuál es la respuesta a esa pregunta.

Editar: sospecho que tiene algo que ver con el hecho de que tanto el formulario como el TabControl son contenedores, pero no estoy seguro.


Intente ponerlo en el evento Form_Shown() . Debido a que está en un contenedor, poner en Form_Load o incluso el constructor de Form () no funcionará.


Solo necesita agregar Control.Select () para su control a este código. Lo he usado para establecer el foco en los controles durante la validación cuando hay errores.

private void ShowControlTab(Control ControlToShow) { if (!TabSelected) { if (ControlToShow.Parent != null) { if (ControlToShow.Parent.GetType() == typeof(TabPage)) { TabPage Tab = (TabPage)ControlToShow.Parent; if (WOTabs.TabPages.Contains(Tab)) { WOTabs.SelectedTab = Tab; TabSelected = true; return; } } ShowControlTab(ControlToShow.Parent); } } }


Intenta usar textbox1.Select() lugar de textbox1.Focus() . Esto me ayudó pocas veces.


Tenía un control de usuario dentro de otro control de usuario. textbox1.Select () funcionó para mí pero textbox1.Focus () no funcionó.

También puede intentar configurar Tabstop en falso, textbox1.Focus (), TabStop true.


private void ChildForm1_Load(object sender, EventArgs e) { ActiveControl = txt_fname; }

Yo uso este código, funciona bien en el control de pestañas win o en el contributor supertab de la barra de puntos