Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在DataGridView中禁用箭头键?_C#_Datagridview - Fatal编程技术网

C# 如何在DataGridView中禁用箭头键?

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

我在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\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]中绑定事件即可