有一个按钮和一个文本框。我在文本框中添加了一个“KeyDown”事件,以便在按下“enter”时按下按钮。很好,然后我试着再次关注文本框但失败了。在下面的代码中,我尝试了三种方法但都没有工作。
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();
}
}
答案 0 :(得分:1)
添加此
if (!textBox1.Focus())
{
textBox1.Focus();
}
这是做什么的: 1.我们检查文本框是否没有聚焦。 2.如果没有聚焦,请关注控件。
编辑:这个怎么样:
btn_BC_add.PerformClick()
答案 1 :(得分:0)
尝试在事件处理程序完成后使用以下方式聚焦文本框:
Dispatcher.Invoke(() => { txt_addRemove.Focus(); })
答案 2 :(得分:0)
你不能尝试改变按钮事件处理程序的焦点吗?如果你不想在正常点击按钮后将焦点放在你的文本框上,这可能是不可取的,但它应该有效。
我猜你的按钮点击正在生成回发之前可以改变焦点