我在C#中有一个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_KeyDown”没有重载与委托“System.Windows.Forms.DataGridViewCellEventHandler”Form1.Designer.cs匹配78 43 FaxMonitorCSharp
答案 0 :(得分:2)
只要当前单元格不在EditMode中,绑定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的所有按键,并将它们重定向到以容器形式存在的方法。