按退格键从当前移动到上一个文本框

时间:2010-08-04 10:20:25

标签: c# winforms visual-studio-2005 controls

我想知道如何将光标从当前文本框移动到上一个文本框。我通过逐个输入按键事件动态创建文本框

e.g。

  

TextBox1中

     

TextBox2中

     

textbox3

假设现在创建了三个文本框并且在第三个文本框上意味着我的光标位于textbox3上,我希望将光标移动到textbox2或者将焦点移动到textbox2进行修改。

我该怎么办?请为此建议正确的代码。

4 个答案:

答案 0 :(得分:2)

基于Giorgi's solution

foreach(var tbox in new[]
     {
         tbox0, tbox1, tbox2
     })
{
    tbox.KeyPress += (sender,e) => keypressed(sender,e);
}

private void keypressed(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Back)
        ((Control)sender).GetNextControl((Control)sender, false).Select(); // .Focus()
}

答案 1 :(得分:2)

小心它不会导致可用性问题,比如使用BACKSPACE擦除最后一个字母,也会跳转到之前的控件,这会让任何用户感到沮丧!

如果当前控件文本为空,并且用户按下退格键,则仅跳转控件:

    private void textBox1_KeyUp(object sender, KeyEventArgs e)
    {
        if ((e.KeyCode == Keys.Back) & (((Control)sender).Text.Length == 0))
        {
            this.SelectNextControl((Control)sender, false, true, true, true);
        }
    }

答案 2 :(得分:1)

如果正确设置了标签顺序,您可以使用GetNextControl方法移动查找上一个控件。

答案 3 :(得分:1)

退格键是用户的重要编辑键,不要乱用它。按Tab键向前移动,按Shift + Tab键向后移动。您的用户可能已经知道此快捷方式。