我有以下代码可以检测到Enter键,并且工作正常。但是,如果您单击表单上的按钮,它将停止工作,即现在按下的按钮具有焦点,而回车则直接进入该按钮。
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");
}
}
我尝试以下操作均未成功;
我的解决方法是创建一个按钮,该按钮在加载时“选择”表单,在输入时将单击该按钮。然后运行一个计时器,以在选择其他按钮时将注意力集中在该按钮上。这似乎是一个伪劣的解决方案。
任何想法都将不胜感激。好像我缺少明显的东西。
菲尔
答案 0 :(得分:1)
覆盖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 );
}