在显示控件时将焦点放在文本框上

时间:2011-10-25 14:51:57

标签: wpf events user-controls textbox focus

有一个包含TextBox的自定义UserControl。显示UserControl时,如何将焦点放在文本框中?我尝试在TextBox.FocusUserControl.IsVisibleChanged事件上调用TextBox.IsVisibleChanged,但这没有用。我还能尝试什么?

似乎有些事情导致TextBox失去焦点。我提到的方法通常有效。如何找出导致TextBox失焦的原因?我试过听TextBox.LostFocus事件,但它的参数不包含很多有价值的信息,我也没有在堆栈跟踪中看到以前的方法。

代码:

   void TextBox1_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            if (this.TextBox1.IsVisible)
                this.TextBox1.Focus();
        }

正如我之前所说,如果我在测试项目中的类似场景中使用相同的代码,它可以工作,但它在我的应用程序中不起作用(应用程序很大,我基本上修复了它中的错误,并且这一个是其中之一)。所以我认为问题不在于焦点设置不正确(正如我在打开这个问题时所想的那样),我认为问题在于其他东西会重置焦点。我想找到它的内容:Find out why textbox has lost focus

2 个答案:

答案 0 :(得分:0)

我不确定为什么它不会再次出现可见性变化......但是当我在TextBox1.Focus()IsEnabledChanged时,它就像一个魅力。

答案 1 :(得分:-1)

当你显示UC时,使用UC作为桥梁,然后调用某个功能来聚焦TextBox