在UserControl中将焦点设置在TextBox上

时间:2013-10-17 18:08:56

标签: c# wpf user-controls textbox

在我的程序中,我有一个用户控件,它使用内容展示器在窗口上显示数据。我想在启动时将光标焦点设置在窗口中的某个textBox上。

通常我会通过窗口的代码隐藏来执行此操作,如下所示:textBox.Focus();

但是,textBox在用户控件中定义,似乎没有相同的方式。到目前为止,我在用户控件的代码隐藏中尝试了与上面相同的方法。

为什么这不起作用?如果在用户控件中定义textBox,如何设置焦点?

我试过了......:

用户控制:

public UserControl()
{
    InitializeComponent();

    FocusManager.SetFocusedElement(this, textBox);
}

用户控制:

public UserControl()
{
    InitializeComponent();

    textBox.Focusable = true;
    Keyboard.Focus(textBox);
}

3 个答案:

答案 0 :(得分:3)

尝试一下:FocusManager.SetFocusedElement

FocusManager.SetFocusedElement(parentElement, textBox)

或来自msdn网站:

textBox.Focusable = true;
Keyboard.Focus(textBox);

注意:您无法在构造函数中设置焦点。如果是,则此时尚未创建UI元素。您应该在控件的Loaded事件期间设置焦点。

答案 1 :(得分:1)

您可以尝试在Loaded的{​​{1}}或Initialized事件中设置焦点。例如:

User control

信息:Loaded eventInitialized event

答案 2 :(得分:1)

有点晚了,但它真正起作用的是

public UserControl()
    {
        InitializeComponent();

        Dispatcher.BeginInvoke(new System.Action(() => { Keyboard.Focus(TextBox); }),
                               System.Windows.Threading.DispatcherPriority.Loaded);
    }