因为 DataGridView 的 KeyPress 等按键事件默认不响应 Cell 中的按键, 所以需要重写 DataGridView 控件的按键事件, 如果不想重写, 也可以直接重写整个窗体的按键事件, 如下
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (keyData == Keys.Enter && this.dataGridView1.CurrentCell.IsInEditMode) {
if (验证失败) {
return true; // 这个return用来跳过默认的Enter事件效果
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
在cellvalidating事件里面,e.formattedvalue是当前的值,判断如果不符合,则e.cancel=true,没法把焦点移开。
try catch
返回单元格就好了。,就是判断一下。如果不符合就返回单元格