DataGridView响应键盘事件

Posted ly1686

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于DataGridView响应键盘事件的主要内容,如果未能解决你的问题,请参考以下文章

C# datagridview 单元格内值改变时触发了哪些事件?(winform)

DataGridView中单元格Cell改变事件

为啥片段中的晶圆厂不响应点击事件?

Python 键盘事件的监听为啥像这样总是出现未响应

请问javascript如何实现控件响应键盘事件?

操作栏项目是可点击的,但不响应片段中的事件