DataGridView单元格仅在按下“Enter”时进行验证

时间:2010-04-21 09:12:21

标签: .net winforms datagridview

当用户按下“Enter”键时,我想验证并提交在DataGridViewCell ONLY 中输入的值。

如果用户按下任何其他键或鼠标按钮(箭头键,使用鼠标按下不同的单元格...),我希望行为类似于“ESC”键:将焦点移动到新单元格并将已编辑的单元格值还原为其先前的值。

1 个答案:

答案 0 :(得分:2)

以下可能有用。

处理CellValidating并取消所有更改,除非输入了最后一个键。

编辑:

使用您自己的类对DataGridView控件进行子类化,并将以下代码添加到其中:

  private bool m_lastWasEnter = false;
  public bool LastWasEnter()
  {
     return m_lastWasEnter;
  }
  protected override bool ProcessDialogKey(System.Windows.Forms.Keys keyData)
  {
     m_lastWasEnter = keyData == Keys.Return;
     return base.ProcessDialogKey(keyData);
  }

然后你可以将以下内容添加到CellValidating事件的处理程序中:

e.Cancel = !instanceOfYourControl.LastWasEnter();

这不会给你你想要的东西但是应该确保它只会停止编辑,如果用户至少按下了输入,你应该能够修改它以满足你的确切要求。< / p>

相关问题