将焦点设置为TextBox

时间:2011-07-07 22:25:34

标签: c# silverlight windows-phone-7

在我的WindowsPhone应用程序中,我有一个需要在给定时间获得焦点的文本框。到目前为止我尝试过的:

textBox1.Focus();

textBox1.UpdateLayout();
textBox1.Focus();

textBox1.IsTabStop = true;
textBox1.UpdateLayout();
textBox1.Focus();

textBox1.IsTabStop = true;
textBox1.Focus();

似乎没什么用。在模拟器中,当调用Focus()方法时,键盘开始上升,但随后崩溃。 TextBox在属性中将IsTabStop设置为true

11 个答案:

答案 0 :(得分:6)

这有帮助吗?

this.ActiveControl = textBox1;

答案 1 :(得分:3)

这似乎是一个Silverlight错误。我在TextChanged上使用了TextBox事件,并在其中设置了Focus()。有点丑陋的解决方法,但它对我有用。如果有人有其他解决方案,请发布。

答案 2 :(得分:3)

如果您想要选择文本框而无需单击它(如果这是您的焦点意思),请尝试:

textBox1.Select();

答案 3 :(得分:2)

即使我已尝试过上述所有解决方案,但对我不起作用。最后,我试着使用以下内容,它起作用了。

private void txtBox_LayoutUpdated(object sender, EventArgs e)
    {
        txtBox.Focus();
    }

答案 4 :(得分:0)

您可以通过以编程方式为焦点完成此操作。这可以通过 调用其Focusmethod,尽管在某些条件下此调用可能会失败(并返回false)。 例如,您无法从页面的构造函数设置焦点控件;太早了。您可以, 但是,从页面的Loadedevent中调用它。

答案 5 :(得分:0)

如果这是在运行时中创建的文本框,如下所示:

TextBox TextBox1 = new TextBox();
TextBox1.Name = "TextBox1";

然后添加此行

TextBox1.Loaded += new RoutedEventHandler(TextBox1_Loaded);

然后还添加以下事件:

private void TextBox1_Loaded(object sender, RoutedEventArgs e)
{
    ((TextBox)sender).Focus();
}

答案 6 :(得分:0)

只需在Form_Activated时间设置任何控件的焦点属性..

private void Form_Activated(Object sender, EventArgs e){
 Textbox.Focus();
}

答案 7 :(得分:0)

这可能有点晚了几年但是在Windows Phone 8.1开发环境中玩了之后我找到了解决方案:

TextBox.Focus(FocusState.Keyboard);

您需要通过FocusState类传递FocusState类型。

答案 8 :(得分:0)

它为我工作了 this.YourTextbox.TabIndex = 0;

答案 9 :(得分:0)

如果我们有两个文本框 EXP:

txtPrincipal

txtPrincipal_Contact

如果想从txtPrincipal移至txtPrincipal_Contact 我们需要在当前文本框exp的leave事件中编写带焦点函数的第二个文本框名称: enter image description here

  private void txtPrincipal_Leave(object sender, EventArgs e)
            {
                txtPrincipal_Contact.Focus();
            }

答案 10 :(得分:0)

花了好几个小时进行调试后,我找到了solution

await Task.Delay(100);
tbInput.Focus(FocusState.Programmatic);