【问题标题】:How to force a focus on a control in windows forms如何强制将焦点集中在 Windows 窗体中的控件上
【发布时间】:2013-05-31 00:33:36
【问题描述】:
我试图在我的 Windows 窗体应用程序中集中一个“搜索”文本框控件。此文本框位于用户控件内,该控件位于窗口窗体内的面板内(如果它很重要)。
我尝试了 3 种我能找到的方法:
// 1
this.ActiveControl = myTextBox;
// 2
myTextBox.Focus();
// 3
myTextBox.Select();
它们似乎都不起作用。我的意思是,例如,当我尝试第一个时,活动控件确实设置为 myTextBox,但是当我尝试在键盘上写东西时,文本框不接受它,我必须先在文本框内单击才能获得焦点。这与所有方法相同。
我错过了什么吗?
【问题讨论】:
标签:
c#
.net
winforms
focus
【解决方案1】:
好的,终于找到答案了:
正如我所说,我的文本框在用户控件内部,在表单内部的面板内部。
当我需要我的用户控件时,我将其添加到面板中。要专注于我的文本框,我必须首先关注我的用户控件,如下所示:
在我的顶级表单中:
panel.Controls.Add(myUserControl);
myUserControl.Focus();
然后在我的用户控件中:
myTextBox.Select();
请注意,如果我使用: myTextBox.Focus() 它将不起作用(不知道为什么)。此外,如果我使用 myUserControl.Select() 而不是 myUserControl.Focus() 它也不起作用。
这似乎是唯一有效的组合。
【解决方案2】:
您可以执行以下逻辑步骤将控件设置为焦点:
your_control.Select();
your_control.Focus();
享受吧! :)