如何在windows窗体中将焦点强制放在控件上

本文关键字:控件 焦点 windows 窗体 | 更新日期: 2023-09-27 18:16:56

我正试图在我的windows窗体应用程序中集中一个"搜索"文本框控件。该文本框位于用户控件内,用户控件位于窗口窗体内的面板内(如果它很重要)。我试了三种方法,我能找到:

// 1
this.ActiveControl = myTextBox;
// 2
myTextBox.Focus();
// 3
myTextBox.Select();

两个似乎都不起作用。举个例子,当我尝试第一个时,活动控制被设置为myTextBox,但当我尝试在键盘上写东西时,文本框不接受它我必须首先点击文本框内部来获得焦点。所有的方法都是一样的。我错过什么了吗?

如何在windows窗体中将焦点强制放在控件上

Ok,终于找到答案了:

就像我说的,我的文本框在用户控件里面,在面板里面,在表单里面。当我需要我的用户控件,我把它添加到面板。为了让我的文本框聚焦,我必须首先聚焦我的用户控件,就像这样:在我的top Form中:

panel.Controls.Add(myUserControl);
myUserControl.Focus();

然后在我的用户控件中:

myTextBox.Select();

注意,如果我使用:myTextBox.Focus(),它将无法工作(不知道为什么)。此外,如果我使用myUserControl.Select()而不是myUserControl.Focus(),它也不会工作。

您可以执行以下逻辑步骤将控件设置为焦点:

your_control.Select();
your_control.Focus();

享受吧!:)