C# 如何在Windows窗体应用程序中为控件设置焦点?

C# 如何在Windows窗体应用程序中为控件设置焦点?,c#,winforms,initialization,focus,C#,Winforms,Initialization,Focus,在Windows窗体应用程序中,当启动应用程序时以及随后调用函数后,我是否编写代码将焦点设置为控件 例如,如果我有一个DropDownList、一个文本框和四个按钮,我希望焦点设置为DropDownList,我在哪里写代码 要在应用程序启动时将焦点设置为特定控件,我可以将tab索引设置为该下拉列表(假设TabStop属性设置为True,则使用最小值) 现在,如果用户完成一个操作(比如说,任何点击按钮事件),然后我更新下拉列表,然后如果我想设置焦点,我可以按如下方式操作 MyDropDownLis

在Windows窗体应用程序中,启动应用程序时以及随后调用函数后,我是否编写代码将焦点设置为控件

例如,如果我有一个DropDownList、一个文本框和四个按钮,我希望焦点设置为DropDownList,我在哪里写代码

要在应用程序启动时将焦点设置为特定控件,我可以将tab索引设置为该下拉列表(假设TabStop属性设置为True,则使用最小值)

现在,如果用户完成一个操作(比如说,任何点击按钮事件),然后我更新下拉列表,然后如果我想设置焦点,我可以按如下方式操作

MyDropDownList.Focus()
问题


注意:问题更多的是关于何处,而不是如何

到目前为止,最简单的解决方案是正确设置TabIndex属性,以便您的“MyDropDownList”控件具有最低的索引。下一种方法是在构造函数中进行。但是您必须使用Select(),Focus()方法还不能工作,因为控件直到稍后才可见

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

也适用于加载事件。Focus()在显示的事件中开始工作。

到目前为止,最简单的解决方案是正确设置TabIndex属性,以便“MyDropDownList”控件具有最低的索引。下一种方法是在构造函数中进行。但是您必须使用Select(),Focus()方法还不能工作,因为控件直到稍后才可见

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

也适用于加载事件。Focus()在显示的事件中开始工作。

当父窗口被激活时(即,当它接收到“已激活”事件时),将焦点设置为您希望焦点所在的子控件

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

请注意,选项卡顺序与焦点的起始位置无关。相反,制表符顺序用于决定当用户点击制表键时焦点如何转移。

当父窗口被激活时(即,当它接收到“已激活”事件时),将焦点设置到您希望焦点所在的子控件

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

请注意,选项卡顺序与焦点的起始位置无关。相反,选项卡顺序用于决定当用户点击tab键时焦点如何转移。

是,在单击事件处理程序中。还有什么?@Hans Passant:那是为了以后的时间(在用户操作之后)。我可以在Click事件处理程序中编写它,也可以在Click事件处理程序内部调用名为UpdateDropDownList()的函数。但是对于初始加载,我应该在哪里编写它?在InitializeComponent()中或调用它之后?正确设置TabIndex属性是解决此问题的最佳且简单的方法。是的,在Click事件处理程序中。还有什么?@Hans Passant:那是为了以后的时间(在用户操作之后)。我可以在Click事件处理程序中编写它,也可以在Click事件处理程序内部调用名为UpdateDropDownList()的函数。但是对于初始加载,我应该在哪里编写它?在InitializeComponent()中或调用后?正确设置TabIndex属性是解决此问题的最佳且简单的方法。+1,因为我需要将其放入Load事件中,以使其在我的C#app中工作+1因为我需要将其放入Load事件中,以使其在我的C#app中工作!