Pregunta

Decir que tengo un Textbox anidado dentro de una TabControl.

Cuando se carga el formulario, me gustaría centrarme en que Textbox (por defecto, el foco se establece en el TabControl).

Simplemente llamando textbox1.focus() en el Load caso de que el formulario no parece funcionar.

He sido capaz de concentrarse 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 forma más elegante de hacer esto?

¿Fue útil?

Solución

La siguiente es la solución:

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

La mejor pregunta sería ¿por qué...No estoy del todo seguro de cuál es la respuesta a que uno es.

Editar:Yo sospecho que es algo que ver con el hecho de que tanto la forma, y el TabControl son los contenedores, pero no estoy seguro.

Otros consejos

Intenta ponerlo en el Form_Shown() evento.Porque es en un recipiente, poner en el Form_Load o incluso la Forma() constructor no funciona.

Trate de usar textbox1.Select() en lugar de textbox1.Focus().Esto me ayudó par de veces.

Sólo tiene que añadir el Control.Seleccione() para el control de este código.He utilizado esto 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);
            }
        }
    }

Yo tenía un control de usuario dentro de otro control de usuario.textbox1.Seleccione() trabajó para mí, pero textbox1.Focus() no funciona.

También puede probar la configuración de Tabulación a false, textbox1.Focus(), punto de Tabulación verdadero.

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

        }

yo uso este código funciona bien en win ficha de control o dotnetbar supertab contrl

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top