我们正尝试在enter key press
编辑模式下在datagridviewcell
上执行代码块。但是我们无法在datagridviewcell
中的editing mode
上找到回车键。
答案 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 +“)”) 结束子
您可能已经解决了问题,只是张贴以便如果其他人(像我一样)正在寻找解决方案,这可能对他们有用。