使用退格键移回上一个textBox(C#)

时间:2014-05-09 12:56:14

标签: c# winforms events

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

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

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

2 个答案:

答案 0 :(得分:3)

因此,为了完成这项工作,您需要确保在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 :(得分:0)

我确实让它最终发挥作用。我所做的并不像我之前尝试过的那么多,但这就是我做的方式。

  1. 我从.cs [Design]视图创建了两个文本框。
  2. 我选中了每个方框并点击了"事件"属性下的闪电图标。这是我以前在没有工作时遗漏的东西。
  3. 我将它们都设置为KeyPress和TextChanged(即textBox1_KeyPress& textBox1_TextChanged(与textBox2做同样的事情)。我不知道这是否是其工作原因的一部分。我' m只是记录我的行为。
  4. 我双击了每个textBox,为每个textBox创建了一个EventArgs。这是我存储常规代码的地方。
  5. 除了EventArgs之外,我手动创建了一个KeyEventArgs(见下文),我在其中放置了退格函数。这是代码:
  6. // 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...
    

    对不起,如果这还不清楚。我只想记录下我做了什么,以防以后再帮助别人。感谢大家的帮助。