这可能是一个简单的问题。我是C#(和大多数编程)的新手,我正在尝试制作一个由两个文本框组成的程序。这些文本框中的信息将经常被删除,并且需要输入新信息,因此需要快速。为方便起见,我试图让退格键重新聚焦在前一个文本框上,而不是使用Shift + Space或单击。这就是我所拥有的。该程序运行,但下面的代码似乎没有按照我的意图去做。
if (e.KeyCode == Keys.Back && textBox2.TextLength == 0)
textBox1.Focus();
因此,当textbox2有0个字符并且后退空格随后被键入时,我希望它回到textbox1。谢谢你的帮助。
答案 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)
我确实让它最终发挥作用。我所做的并不像我之前尝试过的那么多,但这就是我做的方式。
// 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...
对不起,如果这还不清楚。我只想记录下我做了什么,以防以后再帮助别人。感谢大家的帮助。