在datagridviewcell中按回车键执行代码块

本文关键字:执行 代码 回车 datagridviewcell | 更新日期: 2023-09-27 18:20:35

我们正在尝试以datagridviewcell编辑模式在enter key press上执行代码块。但我们在editing mode中找不到datagridviewcell上的回车键。

在datagridviewcell中按回车键执行代码块

KeyDown将不适用于编辑模式下的单元格,子类DataGridView并像这样覆盖ProcessDialogKey。

protected override bool ProcessDialogKey(Keys keyData)
{
    if (keyData == Keys.Enter)
    {
        // Your code here
        return true;
    }
    return base.ProcessDialogKey(keyData);
}

您必须使用dataGridView1_KeyDown事件,如下所示:

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {                
                e.SuppressKeyPress=true;
                //block of code
            }
         }

如果您想检查单击的单元格,请执行以下操作。这是在VB.net中。扩展了Gary已经向您提出的建议。

公共类Custom_DataGridView继承System.Windows.Forms.DataGridView

公共事件DataGridView_CustomEnterKeyPressed(ByVal keyData As Keys,ByVal CurrentCell As DataGridViewCell)

Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys)As Boolean如果keyData=Keys.Enter ThenRaiseEvent DataGridView_CustomEnterKeyPressed(keyData,CType(Me,DataGridView).CurrentCell)"Return true"如果不想移动到下一个单元格,请打开它,如果打开它,光标将不会移动到列中的下一个单元。结束如果返回MyBase.ProcessDialogKey(keyData)终端功能

终端类

使用此Custom_DataGridView而不是现成的DataGridView控件,然后您必须在添加此自定义控件的表单中处理如下所示的DataGridView_CustomEnterKeyPressed事件。

私有子DataGridNameYouHaveUsed_DataGridView_CustomEnterKeyPressedMsgBox("在单元格的DataGridView_CustomEnterKeyPressed事件处理程序中(:"+CurrentCell.ColumnIndex.ToString+","+CurrentCell.RowIndex.ToString+")")结束子

你可能已经解决了你的问题,只是发帖,这样如果其他人(比如我)正在寻找解决方案,这可能对他们有用。