2013-05-20 47 views
0

我在写一个.NET(4.0)应用程序,用户将进入例如2位数在TextBox es中,我希望光标在第二个字符输入到一个后自动前进到“下一个”文本框。什么是实施这个最好的方法?n个字符后移动光标到“下一个”文本框

编辑:我有这个PreviewKeyDown处理程序:

private void ODTextBox_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
{ 
    if (allowedKeys.Contains(e.Key)) 
    { 
     KeyConverter kc = new KeyConverter(); 
     string letter = kc.ConvertToString(e.Key); 
     TextBox tb = (TextBox)sender; 

     if (tb.Text.Length > 1 && tb.SelectedText.Length == 0) 
     { 
      this.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); 
     } 
    } 
} 

然而,MoveFocus方法总是使焦点移动到第一我10个文本框。我每TextBox设置TabIndexKeyboardNavigation.TabIndex,但这没有帮助。

+0

[你尝试过什么了吗?](http://whathaveyoutried.com) –

+0

@HighCore我看着捕捉'KeyDown'事件和编程生成按键来如“标签”到下一个字段,但想知道是否有任何“更好”的方式。 – Conrad

回答

1
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if (...) //Your logic here 
     this.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); 
} 
+0

试过这个,但不工作 - 见上文。 – Conrad

+0

经过一些试验和错误之后,需要在'(TextBox)e.Source'上调用'MoveFocus',而不是'this'以使导航正常工作。 – Conrad

+0

键入的下一个字符将位于“下一个”文本框中,但插入点直到下一个按钮按下才会移动。仍然在寻找如何获得脱光衣服。 – Conrad

相关问题