当用户按下“Enter”键时,我想验证并提交在DataGridViewCell ONLY 中输入的值。
如果用户按下任何其他键或鼠标按钮(箭头键,使用鼠标按下不同的单元格...),我希望行为类似于“ESC”键:将焦点移动到新单元格并将已编辑的单元格值还原为其先前的值。
答案 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>