2009-06-30 21 views
7

Creé un formulario con una etiqueta, un cuadro de texto y un botón. En el evento load load llamé a la función focus() para el cuadro de texto. Pero cuando ejecuto mi código, el cursor no viene al cuadro de texto. Necesito que el cursor vaya al cuadro de texto tan pronto como se cargue el formulario. ¿Cómo hacerlo?foco en el cuadro de texto

Respuesta

7

Si sólo hay que asegurarse de que un cierto control se centrará la primera vez que se carga un formulario, a continuación, cambiar los TabOrder propiedades de todos los controles (en el diseñador) de manera que el control en cuestión es '0' , y los otros elementos están subiendo desde allí, '1', '2', etc.

Si necesita seleccionar dinámicamente un control diferente cuando muestra un formulario dependiendo de alguna condición, utilice el siguiente código:

private void Form1_Load(object sender, EventArgs e) { 
    // You need to show the form otherwise setting focus does nothing 
    // (there are no controls to set focus to yet!) 
    this.Show() 
    if (someCondition == true) 
     control.Focus(); 
    else 
     control2.Focus(); 
} 
+0

Focus 'se puede establecer en el evento Forma mostrada. –

+1

+1: configure el orden correcto de tabuladores de los controles y deje que el marco haga el trabajo. –

+4

Es posible que quieran un orden de tabulación específico, pero es posible que no quieran comenzar con la propiedad de orden de tabulación 0. –

3

Maneje el evento Shown en su lugar. Este código debería funcionar.

private void Form1_Shown(object sender, EventArgs e) 
{ 
    textBox2.Focus(); 
} 
+0

+1 Intenté esto, funciona. –

+0

Esto presenta el mismo problema que la solución Activada, ya que si oculta/muestra la misma forma, siempre restablecerá el enfoque. Esto puede o no ser algo bueno. –

1

No llame al Focus in the Load evento. Llámalo en el evento Activar. Eso funcionaría

+0

También conducirá al cuadro de texto que recibe el foco cada vez que se activa el formulario, lo que puede no ser deseable. –

+0

oh sí. Me perdí ese detalle – Sahas

+0

Entonces, ¿cuál será la mejor manera? ¿Activar el evento o configurar TabOrder? – Vicky

1

Puede establecer la propiedad TabIndex del cuadro de texto en 0 si siempre quiere centrarse en el cuadro de texto cuando se carga el formulario. (Esta propiedad siempre se configura en el formulario.designer.cs. Y no tendrá que escribir ningún código adicional en su formulario.cs)

Cuestiones relacionadas