C# 将焦点设置为元素
有一个按钮和一个文本框。我在文本框中添加了一个“KeyDown”事件,这样当按下“enter”按钮时,按钮就会被点击。很好,然后我再次尝试将焦点放在文本框上,但失败了。在下面的代码中,我尝试了三种方法,但都不起作用C# 将焦点设置为元素,c#,wpf,setfocus,C#,Wpf,Setfocus,有一个按钮和一个文本框。我在文本框中添加了一个“KeyDown”事件,这样当按下“enter”按钮时,按钮就会被点击。很好,然后我再次尝试将焦点放在文本框上,但失败了。在下面的代码中,我尝试了三种方法,但都不起作用 private void txt_addRemove_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Return) { btn_BC_add.Raise
private void txt_addRemove_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
btn_BC_add.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
// 1.way
// IInputElement focusedElement = FocusManager.GetFocusedElement(txt_addRemove);
// 2.way
// Keyboard.Focus(txt_addRemove);
// 3.way
// txt_addRemove.Focus();
}
}
加上这个
if (!textBox1.Focus())
{
textBox1.Focus();
}
它的作用是:
1.我们检查文本框是否未聚焦。
2.如果未聚焦,则聚焦控件
编辑:这个怎么样:
btn_BC_add.PerformClick()
在事件处理程序完成后,尝试使用以下方法聚焦文本框:
Dispatcher.Invoke(() => { txt_addRemove.Focus(); })
您是否也可以尝试更改按钮事件处理程序的焦点?如果您不希望在正常单击按钮后焦点出现在文本框上,这可能不可取,但它应该可以工作
我猜你的按钮点击会在焦点改变之前生成一个返回帖子而不是抓住返回键,我只是设置了按钮的位置。如果他问题中的“3.way”不起作用,为什么这会起作用呢?Okai,我再次阅读了你的帖子,我想我知道解决方法:使用btn_BC_add.PerformClick();改为:)。PerformClick()需要什么命名空间,否则此处未定义该命名空间?System.Windows.Forms-编辑: