将焦点设置在用户控件中的文本框上
本文关键字:文本 控件 焦点 设置 用户 | 更新日期: 2023-09-27 18:35:53
在我的程序中,我有一个用户控件,它使用内容表示器在窗口上显示数据。我想在启动时简单地将光标焦点设置在窗口中的某个textBox
上。
通常我会通过窗口的代码隐藏来执行此操作,如下所示:textBox.Focus();
但是,textBox
是在用户控件中定义的,并且似乎的工作方式不同。到目前为止,我已经在用户控件的代码隐藏中尝试了与上述相同的方法。
为什么这不起作用?如果在用户控件中定义了textBox
,如何设置焦点?
我尝试过的...
用户控制:
public UserControl()
{
InitializeComponent();
FocusManager.SetFocusedElement(this, textBox);
}
用户控制:
public UserControl()
{
InitializeComponent();
textBox.Focusable = true;
Keyboard.Focus(textBox);
}
试一试: FocusManager.SetFocusedElement
FocusManager.SetFocusedElement(parentElement, textBox)
或从 MSDN 网站:
textBox.Focusable = true;
Keyboard.Focus(textBox);
注意:不能在构造函数中设置焦点。如果是,则此时尚未创建 UI 元素。应在控件的 Loaded 事件期间设置焦点。
有点晚了,但它真正对我有用的是
public UserControl()
{
InitializeComponent();
Dispatcher.BeginInvoke(new System.Action(() => { Keyboard.Focus(TextBox); }),
System.Windows.Threading.DispatcherPriority.Loaded);
}
您可以
尝试在User control
的Loaded
或Initialized
事件中设置焦点。例如:
private void MyWpfControl_Load(object sender, EventArgs e)
{
textBox.Focusable = true;
Keyboard.Focus(textBox);
}
信息:加载事件或初始化事件