我正在尝试在Windows窗体的DataGridView
控件中创建快捷方式(CTRL + J)。快捷方式应完全按照向下箭头的方式执行操作(即,在大多数情况下,将选择更改为下一项)。
我试图通过覆盖表单的FormKeyDown
事件并使用SendKeys.SendWait("{DOWN}")
(如果FormKeyDown
接收到J键和Ctrl作为修饰符)来使用CTRL + J。
但是,当我发送{DOWN}
键时,它的作用类似于Ctrl + Down,因为用户仍然按住CTRL键!
如何创建自定义快捷方式,使其行为与DataGridView
已支持的快捷方式完全相同?
最佳答案
您应该避免依靠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);
}
}
关于c# - 如何为DataGridView创建自定义快捷方式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8314139/