我正在尝试在Windows窗体的DataGridView
控件中创建快捷方式(CTRL + J)。快捷方式应该完全按照向下箭头的作用(即,在大多数情况下,将选择更改为下一个项目)。
我试图通过覆盖表单的FormKeyDown
事件并使用SendKeys.SendWait("{DOWN}")
来处理CTRL + J,如果FormKeyDown
收到J键而Ctrl作为修饰符。
然而,当我发送{DOWN}
键时,它就像Ctrl + Down一样,因为用户仍然按住CTRL键!
如何创建自定义快捷方式,使其与DataGridView
已支持的快捷方式具有完全相同的行为?
答案 0 :(得分:1)
您应该避免依赖于使用SendKeys
模仿用户输入,而是使用正确的API进行DataGridView
课程中提供的编程选择。您可以查看以下页面上的程序选择部分:
Selection Modes in the Windows Forms DataGridView Control
在实施编程选择代码时,您需要考虑为数据网格视图配置的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);
}
}