在datagridviewcell中输入按键执行代码块

时间:2013-07-02 05:18:35

标签: c# windows vb.net winforms

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

3 个答案:

答案 0 :(得分:1)

KeyDown不适用于处于编辑模式的单元格,子类DataGridView并覆盖ProcessDialogKey,如下所示。

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

答案 1 :(得分:0)

您必须按如下方式使用dataGridView1_KeyDown事件:

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

答案 2 :(得分:0)

如果要检查单击的单元格,请执行以下操作。这是在VB.net中。扩展了Gary已经建议你的内容。

Public Class Custom_DataGridView     继承System.Windows.Forms.DataGridView

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

受保护的覆盖函数ProcessDialogKey(ByVal keyData As Keys)作为布尔值         如果keyData = Keys.Enter然后             RaiseEvent DataGridView_CustomEnterKeyPressed(keyData,CType(Me,DataGridView).CurrentCell)             'return true'如果你不想移动到下一个单元格,打开它,如果你打开它,光标将不会移动到列中的下一个单元格。         万一         返回MyBase.ProcessDialogKey(keyData) 结束功能

结束班

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

Private Sub DataGridNameYouHaveUsed_DataGridView_CustomEnterKeyPressed(ByVal keyData As System.Windows.Forms.Keys,ByVal CurrentCell As DataGridViewCell)处理DataGridNameYouHaveUsed.DataGridView_CustomEnterKeyPressed         MsgBox(“用于单元格的DataGridView_CustomEnterKeyPressed事件处理程序(:”+ CurrentCell.ColumnIndex.ToString +“,”+ CurrentCell.RowIndex.ToString +“)”) 结束子

您可能已经解决了问题,只是张贴以便如果其他人(像我一样)正在寻找解决方案,这可能对他们有用。