【问题标题】:Move to previous textbox from current by pressing backspace按退格键从当前文本框移到上一个文本框
【发布时间】:2010-08-04 10:20:25
【问题描述】:

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

例如

文本框1

文本框2

文本框3

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

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

【问题讨论】:

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


    【解决方案1】:

    基于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()
    }
    

    【讨论】:

    • 先生,它是在输入按键事件时动态创建的文本框,下次它将超过三个框。
    • @mahesh: var textBox = new TexBox() { TabIndex = ++i; };
    【解决方案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);
            }
        }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 先生,如何修复运行时动态创建的文本框上的标签顺序,请建议。
      【解决方案4】:

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

      【讨论】:

      • 非常真实,先生,我也很熟悉,但先生您能告诉我,如果用户大规模输入条目,然后他突然意识到某些文本条目是错误的。然后根据你的建议,他按 shift+tab,但前一个文本框中的文本保持不变,他必须通过删除其上的字符来手动修改它。所以,先生,请指导我。感谢您的合作。
      • 用户只需点击错误的文本,根据需要按退格键或删除,然后键入替换内容。你不必帮忙。试图提供帮助只会让用户更加困难。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多