¿Cómo poner foco en TextBox cuando se carga el formulario?


156

Tengo en mi programa C # textBox

Necesito que cuando comience el programa, el foco esté en el cuadro de texto

Intento esto en Form_Load:

MyTextBox.Focus();

pero no funcionará

Respuestas:


341

Establezca la ActiveControlpropiedad del formulario y debería estar bien.

this.ActiveControl = yourtextboxname;

1
Intenté esto por ComboBox. ¡Pero tampoco funciona!
Alex Jolig

1
Gracias, esto funcionó para mí donde todo lo demás no. No estoy seguro de por qué Tab Index = 0 no funcionará, pero probablemente haya un orden extraño de operaciones mientras se carga el formulario / cuadro de diálogo que se muestra.
David Carrigan

1
PRUEBE ESTO >>> this.ActiveControl = yourtextboxname.Control;
Polamin Singhasuwich

3
Esto funciona muy bien, pero ¿por qué no MyTextBox.Focus();funcionó? Parece que funciona bien una vez que el programa se está ejecutando.
Levon

2
Escribir this.ActiveControl = textBox1;Todos entiende el significado de "textBox1". "youttextboxname" suena como... = "MyTextBox";
Bitterblue

25

verifique su orden de tabulación y asegúrese de que el cuadro de texto esté configurado en cero


Trabajando. O simplemente tabindex para ser el primer elemento "enfocable" del cursor en el formulario.
apincik

15

Tu podrías intentar:

MyTextBox.Select ();

De acuerdo con la documentación:

El método Seleccionar activa el control si el bit de estilo Seleccionable del control se establece en verdadero en ControlStyles, está contenido en otro control y todos sus controles principales están visibles y habilitados.

Primero puede verificar si el control puede seleccionarse inspeccionando el propiedad MyTextBox.CanSelect .


15

No puede establecer el foco en un control si no se ha procesado. Form.Load () ocurre antes de que se representen los controles.

Vaya a los eventos del formulario y haga doble clic en el evento "Mostrado". En el controlador de eventos que se muestra en el formulario, llame al método control.Focus ().

    private void myForm_Shown(object sender, EventArgs e)
    {
        // Call textbox's focus method
        txtMyTextbox.Focus();
    }


6

Textbox.Focus()"Intenta" establecer el foco en el elemento del cuadro de texto. En caso de que la visibilidad del elemento esté oculta, por ejemplo, Focus()no funcionará. Así que asegúrese de que su elemento sea visible antes de llamar Focus().


5

La razón por la que no puede hacer que funcione es porque Loadse llama al evento antes de dibujar o representar el formulario.

Es como decirle a una pizzería cómo hacer tu pizza y luego pedirles que te envíen una imagen de cuánto pepperoni hay en tu pizza antes de que la preparen.

using System;
using System.Windows.Forms;

namespace Testing
{
    public partial class TestForm : Form
    {
        public TestForm()
        {
            InitializeComponent();

            Load += TestForm_Load;

            VisibleChanged += TestForm_VisibleChanged;

            Shown += TestForm_Shown;

            Show();

        }

        private void TestForm_Load(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called before the form is rendered.");
        }

        private void TestForm_VisibleChanged(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called before the form is rendered.");
        }

        private void TestForm_Shown(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called after the form is rendered.");
            txtFirstName.Focus();
        }
    }
}

4

Resolví mi problema al cambiar la propiedad "TabIndex" de TextBox. Establecí 0 para TextBox en el que quiero enfocarlo en Form cuando comience el programa.


3

use el evento que se muestra en el formulario y establezca

MyTextBox.Focus();

3

Establezca el valor de la propiedad de índice de tabulación = 0 y luego en la función de carga de formulario escriba:

YourTextboxName.Focus();

Funcionará.


2

Puede usar TabIndextextBox1.select(); o TabIndex en la configuración del cuadro de texto. TabIndex=0enfocado primero.


Si llamamos a textBox1.select (); en el controlador de eventos de carga de formulario, establece el foco en el cuadro de texto1.
Tushar R.

1

Establezca Tabstop en True y TabIndex al mínimo en el control en el que necesita centrarse.

por ejemplo, si tiene 2 TextBoxes: TextBox1 y TextBox2, configure Tabstop en True para ambos y TabIndex en 0 y 1 respectivamente. Cuando se carga el formulario, el foco estará en TextBox1 y al presionar la tecla 'Tab', el foco se moverá a TextBox2.


1

en su formulario, vaya a propiedades y asegúrese de que la propiedad "TopMost" esté establecida en verdadero, eso resolverá su problema.



0

Finalmente encontré el problema que estaba usando Metro Framework y todas sus soluciones no funcionarán con metroTextBox, y todas sus soluciones funcionarán con textBox normal en carga, mostrar, visibilidad_cambiar, eventos, incluso la pestaña índice = 0 es válida.

   // private void Form1_VisibleChanged(object sender, EventArgs e)
   // private void Form1__Shown(object sender, EventArgs e)
    private void Form1_Load(object sender, EventArgs e)
    {

        textBox1.Select();
        this.ActiveControl=textBox1;
        textBox1.Focus();
    }

-5

En jquery establecer foco

$(function() {
  $("#txtBox1").focus();
});

o en Javascript puedes hacer

window.onload = function() {
  document.getElementById("txtBox1").focus();
};

44
Esta podría ser una buena respuesta para una pregunta del sitio web, pero esta está etiquetada c#y winforms.
Ben Voigt
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.