C# Visual Studio,当按钮获得焦点时如何检测 Enter 键按下
C# Visual Studio, how to detect Enter key press when a button has focus
我有以下代码可以检测回车键并且工作正常。但是,如果您单击表单上的一个按钮,它就会停止工作,即按下的按钮现在有焦点,然后按回车键直接进入该按钮。
private void Form1_Load(object sender, EventArgs e)
{
KeyPreview = true;
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Enter pressed");
}
}
我尝试了以下但没有成功;
- 使用表单 PreviewKeyEvent 而不是 keyUp
- 使用窗体 KeyDown 而不是 KeyUp
- 正在创建一个被选为表单的按钮 'AcceptButton'
我的解决方法是创建一个按钮,在加载表单 'selects' 时,将在输入时单击该按钮。然后让计时器 运行 将焦点保持在该按钮上,以防选择任何其他按钮。这似乎有点粗制滥造。
如有任何想法,我们将不胜感激。好像我遗漏了一些明显的东西。
菲尔
覆盖 ProcessCmdKey
:
protected override bool ProcessCmdKey( ref Message msg, Keys keyData ) {
if( keyData == Keys.Enter ) {
// Enter is pressed
return true; //return true if you want to suppress the key.
}
return base.ProcessCmdKey( ref msg, keyData );
}
我有以下代码可以检测回车键并且工作正常。但是,如果您单击表单上的一个按钮,它就会停止工作,即按下的按钮现在有焦点,然后按回车键直接进入该按钮。
private void Form1_Load(object sender, EventArgs e)
{
KeyPreview = true;
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Enter pressed");
}
}
我尝试了以下但没有成功;
- 使用表单 PreviewKeyEvent 而不是 keyUp
- 使用窗体 KeyDown 而不是 KeyUp
- 正在创建一个被选为表单的按钮 'AcceptButton'
我的解决方法是创建一个按钮,在加载表单 'selects' 时,将在输入时单击该按钮。然后让计时器 运行 将焦点保持在该按钮上,以防选择任何其他按钮。这似乎有点粗制滥造。
如有任何想法,我们将不胜感激。好像我遗漏了一些明显的东西。
菲尔
覆盖 ProcessCmdKey
:
protected override bool ProcessCmdKey( ref Message msg, Keys keyData ) {
if( keyData == Keys.Enter ) {
// Enter is pressed
return true; //return true if you want to suppress the key.
}
return base.ProcessCmdKey( ref msg, keyData );
}