0

我们正在尝试enter key press在编辑模式下执行代码块。但是我们无法在中datagridviewcell找到输入键。datagridviewcellediting mode

4

3 回答 3

1

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

protected override bool ProcessDialogKey(Keys keyData)
{
    if (keyData == Keys.Enter)
    {
        // Your code here
        return true;
    }
    return base.ProcessDialogKey(keyData);
}
于 2013-07-02T05:33:50.467 回答
0

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

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {                
                e.SuppressKeyPress=true;
                //block of code
            }
         }
于 2013-07-02T05:21:05.827 回答
0

如果要检查单击了哪个单元格,请执行以下操作。这是在 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 If keyData = Keys.Enter Then RaiseEvent DataGridView_CustomEnterKeyPressed(keyData, CType(Me, DataGridView).CurrentCell) 'Return true '如果不想移动到下一个单元格,请打开它,如果您打开它,光标将不会移动到列中的下一个单元格。End If Return MyBase.ProcessDialogKey(keyData) End Function

结束类

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

Private Sub DataGridNameYouHaveUsed_DataGridView_CustomEnterKeyPressed(ByVal keyData As System.Windows.Forms.Keys, ByVal CurrentCell As DataGridViewCell) Handles DataGridNameYouHaveUsed.DataGridView_CustomEnterKeyPressed MsgBox("In DataGridView_CustomEnterKeyPressed Event Handler for cell(:" + CurrentCell.ColumnIndex.ToString + "," + CurrentCell.RowIndex .ToString + ")") 结束子

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

于 2013-11-20T05:54:22.330 回答