代码之家  ›  专栏  ›  技术社区  ›  mahesh

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

  •  0
  • mahesh  · 技术社区  · 14 年前

    文本框1

    文本框3

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

    我该怎么办?请为相同的建议适当的代码。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Community pid    7 年前

    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()
    }
    
        2
  •  2
  •   invert    14 年前

    小心,它不会造成可用性问题,如使用退格删除最后一个字母,也会跳到以前的控制,这将挫败任何用户!

        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
  •  1
  •   Giorgi    14 年前

    如果选项卡顺序设置正确,则可以使用 GetNextControl

        4
  •  1
  •   Hans Passant    14 年前

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