2010-10-30 9 views
23

En una aplicación de Windows Forms, cuando escribo el código para establecer el foco en un control tanto mientras se inicia la aplicación como posteriormente después de llamar a una función?Cómo establecer el foco en un control en una aplicación de Windows Forms?

Por ejemplo, si tengo una DropDownList, un TextBox y cuatro botones y quiero que el foco se configure en DropDownList, donde escribo mi código?

Para establecer el foco en un control particular en el inicio de la aplicación, puedo establecer el índice de pestañas en ese DropDown (con un valor mínimo, suponiendo que la propiedad TabStop se establece en True).

Ahora, si el usuario lleva a cabo una operación (por ejemplo, cualquiera de los eventos haga click) y luego puedo actualizar el menú desplegable y después de eso si quiero ajustar el enfoque ... que puedo hacerlo como

MyDropDownList.Focus() 

pREGUNTA

NB: La pregunta es más sobre donde, no cómo?

+0

Sí, en el controlador de eventos Click. ¿Qué más hay ahí? –

+0

@Hans Passant: Eso es para los tiempos posteriores (después de una operación de usuario). Puedo escribirlo en el controlador de eventos Click o en una función llamada UpdateDropDownList() a la que llamo internamente dentro de un manejador de eventos Click. Pero para la carga inicial, ¿dónde la escribo? En InitializeComponent() o después de que se llama? – Kanini

Respuesta

52

Con mucho, la solución más simple es establecer la propiedad TabIndex correctamente para que su control 'MyDropDownList' tenga el índice más bajo. El siguiente enfoque es hacerlo en el constructor. Pero tiene que utilizar Select(), el método Focus() aún no puede funcionar porque el control no se vuelve visible hasta más adelante.

Public Sub New() 
    InitializeComponent() 
    MyDropDownList.Select() 
End Sub 

Funciona en el evento Load también. Focus() comienza a funcionar en el evento Mostrado.

+0

+1 porque necesitaba ponerlo en el evento Load para que funcione en mi aplicación C#. – Hybrid

+0

Realmente aprecio el uso de .Select(). Eso era exactamente lo que necesitaba. – jeromeyers

Cuestiones relacionadas