15

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

// 1
this.ActiveControl = myTextBox;

// 2
myTextBox.Focus();

// 3
myTextBox.Select();

它们似乎都不起作用。我的意思是,例如,当我尝试第一个时,活动控件确实设置为 myTextBox,但是当我尝试在键盘上写东西时,文本框不接受它,我必须先在文本框内单击才能获得焦点。这与所有方法相同。我错过了什么吗?

4

2 回答 2

24

好的,终于找到答案了:

正如我所说,我的文本框位于用户控件内部,位于表单内部的面板内部。当我需要我的用户控件时,我将其添加到面板中。要专注于我的文本框,我必须首先关注我的用户控件,如下所示: 在我的顶级表单中:

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

然后在我的用户控件中:

myTextBox.Select();

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

这似乎是唯一有效的组合。

于 2013-06-04T14:49:04.603 回答
1

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

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

享受!:)

于 2019-08-07T02:21:39.023 回答