如何为DataGridView创建自定义快捷方式

本文关键字:自定义 快捷方式 创建 DataGridView | 更新日期: 2023-09-27 18:16:01

我试图在Windows窗体的DataGridView控件中创建一个快捷键(CTRL+J)。快捷方式应该简单地完成向下箭头所做的事情(即,在大多数情况下,将选择更改为下一项)。

我试图通过覆盖形式的FormKeyDown事件和使用SendKeys.SendWait("{DOWN}")来处理CTRL+J,如果FormKeyDown接收J键和CTRL作为修饰符。

然而,当我发送{DOWN}键时,它的行为就像Ctrl+Down,因为用户仍然持有Ctrl键!

我如何创建自定义快捷方式,使其具有与DataGridView已经支持的快捷方式完全相同的行为?

如何为DataGridView创建自定义快捷方式

您应该避免使用SendKeys模仿用户输入,而是使用DataGridView类上可用的正确API进行编程选择。您可以查看以下页面的程序化选择部分:

Windows窗体DataGridView控件中的选择模式

在实现可编程选择代码时,需要考虑为数据网格视图配置的SelectionMode


或者,您可以从DataGridView子类化并实现自定义快捷方式,以便它们重定向到现有的快捷方式。例子:

public class MyDataGridView : DataGridView
{
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == (Keys.Control | Keys.J))
        {
            this.ProcessDownKey(Keys.Down);
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }
}