将焦点设置为元素

时间:2012-03-22 14:18:17

标签: c# wpf setfocus

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

3 个答案:

答案 0 :(得分:1)

添加此

if (!textBox1.Focus())
   {
       textBox1.Focus();
   }

这是做什么的: 1.我们检查文本框是否没有聚焦。 2.如果没有聚焦,请关注控件。

编辑:这个怎么样:

btn_BC_add.PerformClick()

答案 1 :(得分:0)

尝试在事件处理程序完成后使用以下方式聚焦文本框:

Dispatcher.Invoke(() => { txt_addRemove.Focus(); })

答案 2 :(得分:0)

你不能尝试改变按钮事件处理程序的焦点吗?如果你不想在正常点击按钮后将焦点放在你的文本框上,这可能是不可取的,但它应该有效。

我猜你的按钮点击正在生成回发之前可以改变焦点