如何强制关注Windows窗体中的控件

Wol*_*olf 12 .net c# focus winforms

我试图将"搜索"文本框控件集中在我的Windows窗体应用程序中.此文本框位于用户控件内,该控件位于窗体内的面板内(如果很重要).我尝试了3种可以找到的方法:

// 1
this.ActiveControl = myTextBox;

// 2
myTextBox.Focus();

// 3
myTextBox.Select();
Run Code Online (Sandbox Code Playgroud)

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

Wol*_*olf 21

好的,终于找到了答案:

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

panel.Controls.Add(myUserControl);
myUserControl.Focus();
Run Code Online (Sandbox Code Playgroud)

然后在我的用户控件中:

myTextBox.Select();
Run Code Online (Sandbox Code Playgroud)

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

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