我必须处理文本框上的“Enter”键事件,所以我创建了一个从 textBox 继承的新类,并且已经覆盖了 IsInputKey 方法。问题是在没有先按空格键的情况下不会触发 KeyDown 事件。
public class EnterTextBox : TextBox
{
protected override bool IsInputKey(Keys keyData)
{
if (keyData == Keys.Enter)
{
return true;
}
else
{
return base.IsInputKey(keyData);
}
}
}
从上面的类创建后
EnterLisTextBox enterTextBox1 = new EnterLisTextBox();
enterTextBox1.KeyDown += enterTextBox1_KeyDown;
按键按下事件处理程序是
void enterTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Pressed enter");;
}
}
但这只有在我使用“回车键”之前按下“空格键”时才有效。但是一旦我按下空格键,即使我在文本框中重新输入所有内容,它也会起作用。为什么是这样?为什么按空格键是先决条件?
更新:
实现 keyPress 事件对我有用,但如果有人知道为什么在使用 sapce 栏之前上述方法不起作用。这就是我使用按键的方式,注意e.KeyChar == '\r'
void enterTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
{
MessageBox.Show("Pressed enter");
}
}