如何从代码中设置keyboardnavigation.Tabindex

时间:2013-07-22 05:28:04

标签: wpf c#-4.0 keyboard-navigation

我在textbox1事件上绑定了LostFocus个数据。我设置了键盘导航。 Tabindex=7textbox1 keyboardNavigation textbox2的{​​{1}}。现在我的问题是正在为TabIndex=8进行正则表达式验证,如果我在textbox1中输入无效字符,则表示textbox1表示无效,只要点击“确定”,它就会导航到{{1我要将此键盘导航设置为MessageBox,直到我输入有效字符。我怎样才能做到这一点?

我试过这种方式:

textbox2

如果输入的文字无效,如何将键盘导航设置为textbox1?任何建议。

编辑:添加了xaml

if (!string.IsNullOrEmpty(txtbox1.Text))
{
    if(Regex.IsMatch(txtbox1.Text, @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"))
    {
        txtbox2.Text = "(" + txtbox1.Text + ")";
    }
    else
    {
        MessageBoxResult mbr;
        mbr=MessageBox.Show("please enter valid Email Id", "VMS", MessageBoxButton.OK, MessageBoxImage.Error);

        if (mbr == MessageBoxResult.OK)
        {
            Keyboard.Focus(txtbox1);
            txtbox1.Clear();
            // txtbox1.TabIndex = 7;
            //txtbox1.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
            // txtbox2.MoveFocus(new TraversalRequest(FocusNavigationDirection.Previous));
        }

        //txtbox1.Focus();                

        // KeyboardNavigation.SetTabIndex(txtbox1, 6);
     }
}
else
{
    txtbox2.Text = string.Empty;
    // txtbox1.TabIndex = 7;
    //txtbox1.MoveFocus(new TraversalRequest(FocusNavigationDirection.Previous));
    //KeyboardNavigation.SetTabIndex(txtbox1, 7);
    // txtbox2.TabIndex=7;
    //Keyboard.Focus(txtbox2);
}

1 个答案:

答案 0 :(得分:0)

尝试回过头几步......当我将代码复制到一个新项目并添加了几个TextBoxes时,它已经完成了你所追求的目标。弹出MessageBox,点击了OK,焦点停留在textBox1。这是我期望的行为。

我建议您将其逻辑焦点转移到textBox2,这可能是您在WindowUserControl上设置TextBox的属性。{{1}} 1}} es驻留在。