我需要捕获键盘上的kepress组合键,这样我就可以覆盖标准函数,我已经尝试了以下方法:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.A)
{
MessageBox.Show("Hello");
}
}
但当按Ctrl+A
时,消息不会被触发。最终目的是覆盖Form1
中DataGridView
的窗口快捷方式“全选”,以确保当在表单窗口中按Ctrl+A
时,只选择某些行。
3条答案
按热度按时间gwbalxhn1#
首先,确保
Form1
属性接下来,不要忘记 * 处理 * 消息(您不希望
DataGridView
处理消息并执行SelectAll
)因此,您可以在
Form1
(KeyPreview = true
)上 * 预览 *KeyDown
,执行所需的操作,并 * 阻止 *DataGridView
执行 * 全选 *(e.Handled = true
)hsgswve42#
一般而言,若要行程快捷键,您可以覆写
ProcessCmdKey
。借由覆写这个方法,您可以行程按钮组合:返回
true
,意味着它由您的代码处理,键不会传递给子控件。因此,在窗体级别重写此方法就足够了。但是如果您专门讨论
DataGridView
以自定义Ctrl + A
组合,则可以覆盖DataGridView
的ProcessDataGridViewKey
方法:nwo49xxi3#
只是为了记录:这也可以通过
KeyPress
来实现,因为Ctrl+字母键是“特殊的”: