DataGridView选中行改变的坑

在如图中,添加的DataGridView是无法获取到键盘按键的按下,无法实现按键控制选中行的选中光标上下移动。尽管将DataGridView设为焦点控件,也不行。而且在后来,通过捕获键盘来直接改变选中行来实现功能,也遇到了问题,网上方法选中行 dataGridView1.Rows[index].Selected = true; 也无法实现。

我个人感觉应该是被某些控件或者窗体不捕获了,以至于DataGridView无法实现享用功能。

思路: 我们利用重写 ProcessCmdKey(ref Message msg, Keys keyData) 捕获键盘重写键盘事件方法,然后判断按键,进行处理响应的功能。
代码如下:

  protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            if (keyData == Keys.Up)//上键
                int index = dataGridView1.CurrentCell.RowIndex;
                if (index > 0)
                    dataGridView1.CurrentCell = dataGridView1.Rows[index--].Cells[0];
                    dataGridView1.Rows[index].Cells[0].Selected = true;
                return true;
            if (keyData == Keys.Down)//下键
                int index = dataGridView1.CurrentCell.RowIndex;
                if (index < dataGridView1.RowCount -1)
                    dataGridView1.CurrentCell = dataGridView1.Rows[index++].Cells[0];
                    dataGridView1.Rows[index].Cells[0].Selected = true;
                return true;
            if (keyData == Keys.Enter)//Enter键
                DataGridView1_CellDoubleClick(null , null);