DataGridView响应键盘事件

问题:

在做《研发日工资表》的时候,需要在单元格编辑时响应键盘按键(按F6向下批量填充数据)。

dataGridView1_KeyPress(object sender, KeyPressEventArgs e) 事件不起作用。

 

解决:

捕获键盘重写键盘事件方法 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); } return base.ProcessCmdKey(ref msg, keyData); }

 

参考:

[1]. 捕获键盘事件控制DataGridView选中行改变 https://www.jianshu.com/p/6f406e5f7c34