C# 如何在DataGridView中禁用箭头键?
我在C#中有一个C# 如何在DataGridView中禁用箭头键?,c#,datagridview,C#,Datagridview,我在C#中有一个DataGridView,需要禁用箭头键(因此它们无法通过键导航列表)。我试过这个: void dataGridView1_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyData & Keys.KeyCode) { case Keys.Up: case Keys.Right: case Key
DataGridView
,需要禁用箭头键(因此它们无法通过键导航列表)。我试过这个:
void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData & Keys.KeyCode)
{
case Keys.Up:
case Keys.Right:
case Keys.Down:
case Keys.Left:
e.Handled = true;
e.SuppressKeyPress = true;
break;
}
}
但它没有禁用箭头键。有什么想法吗
我尝试了此处理程序,但出现编译错误:
this.dataGridView1.KeyDown += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_KeyDown);
错误1“dataGridView1\u KeyDown”的重载与委托“System.Windows.Forms.DataGridViewCellEventHandler”Form1.Designer.cs 78 43 FaxMonitorCSharp”匹配
只要当前单元格不处于编辑模式,绑定KeyDown事件就非常有效,但如果当前单元格处于编辑模式,则需要更具创造性。我创建了一个继承的DataGridView类,如下所示重写ProcessCmdKey
class NewDataGridView : System.Windows.Forms.DataGridView
{
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
(FindForm() as Form1).DataGridViewKeyDown((DataGridView)this, keyData);
//return base.ProcessCmdKey(ref msg, keyData);
return true;
}
}
这将吸收datagridview的所有按键,并将它们重定向到容器表单中的方法。代码工作正常。。你可能忘了系鞋带了event@KCdod可能就是这样。是否有一个GUI我可以编辑,或者我仍然需要通过代码来编辑?这是错误的事件处理程序。尝试使用this.dataGridView1.KeyDown+=dataGridView1\u KeyDown在窗体的构造函数中。如果您使用的是visual studio,只需从datagrid的事件列表[Search for keydown event]中绑定事件即可