C# 将焦点设置为元素

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

有一个按钮和一个文本框。我在文本框中添加了一个“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();
    }
}
加上这个

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-编辑: