使用退格键移动到前一个文本框(c#)

本文关键字:文本 一个 移动 | 更新日期: 2023-09-27 18:02:37

这可能是一个简单的问题。我是c#(和大多数编程)的新手,我正在尝试制作一个由两个文本框组成的程序。这些文本框中的信息将经常被删除,并且需要输入新的信息,因此需要快速。为了方便,我试着让退格键重新聚焦在以前的文本框上,而不是使用Shift+Space或点击。这是我有的。程序运行了,但是下面的代码似乎并没有按照我的意图去做。

if (e.KeyCode == Keys.Back && textBox2.TextLength == 0)
  textBox1.Focus();

因此,当textbox2有0个字符并且退格键随后被键入时,我希望它移动回textbox1。谢谢你的帮助。

使用退格键移动到前一个文本框(c#)

因此,要使此工作,您将需要确保在KeyUp上运行此代码,但您也不需要多个KeyUp处理程序来执行此操作。考虑以下KeyUp处理程序:

private void textBox_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
    var textBox = sender as TextBox;
    if (textBox == null) { return; }
    if (e.KeyCode == Keys.Back && textBox.Text.Length == 0)
    {
        // this here of course being the Form
        // Select causes the form to select the previous control in the tab order
        this.Select(true, false);
    }
}

现在只需将此处理程序附加到所有您希望以这种方式执行的文本框上,它们就会全部工作。

我终于让它工作了。我所做的与我之前所做的并没有太大的不同,但我是这样做的。

  1. 我从。cs [Design]视图创建了两个文本框。
  2. 我选择了每个框,点击属性下的"事件"闪电图标。
  3. 我将它们都设置为KeyPress和TextChanged(即textBox1_KeyPress &textBox1_TextChanged(做了同样的事情与textBox2)。我不知道这是不是它成功的部分原因。我只是在记录我的行为。
  4. 我双击了每个textBox,它为每个textBox创建了一个EventArgs。这是我存储常规代码的地方。
  5. 除了EventArgs,我手动创建了一个KeyEventArgs(见下文),我把退格功能。代码如下:
// Here is the KeyEventArgs I created using KeyPress (Public).

public void textBox2_KeyPress(object sender, KeyEventArgs e)

       {
           if (e.KeyCode == Keys.Back && textBox2.Text.Length == 0)
               textBox1.Focus();
       }

// Here is where the rest of my code (Private).

private void textBox2_TextChanged(object sender, EventArgs e)

           {
           if (textBox2.Text == "A")
               richTextBox3.Text = "January";
           if (textBox2.Text == "B")
               richTextBox3.Text = "February";
           if (textBox2.Text == "C")
               richTextBox3.Text = "March";
// Code Continues...

对不起,如果这不是清楚的。我只是想把我所做的记录下来,以防以后对别人有帮助。谢谢大家的帮助。