如何判断在文本框中何时按下回车键
本文关键字:何时按 回车 文本 何判断 判断 | 更新日期: 2024-09-24 13:48:50
基本上,我希望能够在按下ENTER键时触发事件。我已经试过了:
private void input_KeyDown(object sender, KeyEventArgs e)
{
if (e.Equals("{ENTER}"))
{
MessageBox.Show("Pressed enter.");
}
}
但是MessageBox从未出现。我该怎么做?
试试。。。
private void input_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyData == Keys.Enter)
{
MessageBox.Show("Pressed enter.");
}
}
要添加到@Willy David Jr的答案:您也可以使用实际的密钥代码。
private void input_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyChar == 13)
{
MessageBox.Show("Pressed enter.");
}
}
实际上你可以说
private void input_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
MessageBox.Show("Pressed enter.");
}
}
您可以使用Keypress事件。如果你只是在寻找"Enter"键,那么你可能不在乎修改键(如Shift和/或Ctrl),这就是为什么大多数人会使用KeyDown而不是keypress。第二个好处是回答在实现任何其他答案后几乎总是会问的问题:"当我使用引用的代码时,为什么按"Enter"会引起嘟嘟声?"这是因为需要处理Keypress事件。通过使用Keypress,您可以在一个地方解决这两个问题:
private void input_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
// Your logic here....
e.Handled = true; //Handle the Keypress event (suppress the Beep)
}
}
如果您的Form定义了AcceptButton,您将无法使用KeyDown来捕获Enter。
您应该做的是在Form级别捕获它。将此代码添加到表单:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((this.ActiveControl == myTextBox) && (keyData == Keys.Return))
{
//do something
return true;
}
else
{
return base.ProcessCmdKey(ref msg, keyData);
}
}
您也可以这样做:
private void input_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode== Keys.Enter)
{
//Your business logic here.
}
}
KeyCode
与KeyData
的唯一区别在于,KeyCode
可以检测与KeyCode
组合的修饰符(例如CTRL、Shift+A),而您在这里不需要这些修饰符。
快进到2022年,上面的声明完全相反。
"KeyCode与KeyData的唯一区别在于,KeyCode可以检测与KeyCode组合的修饰符(例如CTRL、Shift+A),而您在这里不需要这些修饰符"
KeyDown事件e.KeyCode不会触发Keys。输入