C# Windows 表单应用程序热键 - KeyDown 事件不起作用
C# Windows Forms Applications Hotkey - KeyDown event not working
我阅读了很多关于为 Windows 表单应用程序制作热键的问题,并尝试了很多人说它有效的代码,但对我来说,不知何故。
代码:
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.S)
{
timer1.Stop();
e.SuppressKeyPress = true;
}
}
如果您想为您的表单创建全局热键管理器以供该表单中的所有控件使用,您需要覆盖捕获所有控件的所有键的 Form.ProcessCmdKey()
方法,而不是使用表单仅在背景聚焦时有效且仅在 ActiveControl
为 null
:
时发生的按键事件
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch ( keyData )
{
case Keys.Control | Keys.S:
timer1.Stop();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
因此,您可以捕捉到您需要的任何组合键,并且 return 如果已处理则为真。
我阅读了很多关于为 Windows 表单应用程序制作热键的问题,并尝试了很多人说它有效的代码,但对我来说,不知何故。
代码:
void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.S)
{
timer1.Stop();
e.SuppressKeyPress = true;
}
}
如果您想为您的表单创建全局热键管理器以供该表单中的所有控件使用,您需要覆盖捕获所有控件的所有键的 Form.ProcessCmdKey()
方法,而不是使用表单仅在背景聚焦时有效且仅在 ActiveControl
为 null
:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch ( keyData )
{
case Keys.Control | Keys.S:
timer1.Stop();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
因此,您可以捕捉到您需要的任何组合键,并且 return 如果已处理则为真。