Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set focus to a control in a Windows Forms application?

In a Windows Forms application, when do I write the code to set the focus to a control both while the application is launched and subsequently after I call a function?

For instance, if I have a DropDownList, a TextBox and four buttons and I want the Focus to be set to the DropDownList, where do I write my code?

To set the focus to a particular control on application launch, I can set the tab index to that DropDown (with a minimum value, under the assumption TabStop property is set to True).

Now, if the user completes an operation (say, any of the Click Button Events) and then I update the DropDown and after that if I want to set the focus...I can do it as

MyDropDownList.Focus()

QUESTION

NB: The question is more about where, not how?

like image 565
Kanini Avatar asked Oct 30 '10 16:10

Kanini


People also ask

How do you focus a control in C#?

You could do these logic steps to set your control to be the focus: your_control. Select(); your_control. Focus();

Which method is used to set input focus to the control?

Use the SetFocus method when you want a particular field or control to have the focus so that all user input is directed to this object. To read some of the properties of a control, you need to ensure that the control has the focus. For example, a text box must have the focus before you can read its Text property.

Can all form control receive focus?

A control can be selected and receive input focus if all the following are true: the Selectable value of ControlStyles is set to true , it is contained in another control, and all its parent controls are both visible and enabled.


2 Answers

By far the simplest solution is to set the TabIndex property correctly so that your 'MyDropDownList' control has the lowest index. The next approach is to do it in the constructor. But you have to use Select(), the Focus() method cannot work yet because the control doesn't become visible until later.

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

Works in the Load event as well. Focus() starts working in the Shown event.

like image 101
Hans Passant Avatar answered Oct 21 '22 17:10

Hans Passant


When the parent window is activated (that is, when it receives the "Activated" event), set the focus to the child control where you want the focus located.

private void Form_AddAppID_Activated(object sender, EventArgs e)
{
    textID.Focus();
}

Note that the tab order has nothing to do with where the focus starts. Instead, the tab order is used to decide how the focus gets transferred when the user hits the tab key.

like image 31
Paul Yao Avatar answered Oct 21 '22 16:10

Paul Yao