C# Winform DataGridView中输入一单元格内容 回车 后,它向下走,但如果此单元格值错误,我想仍停在此单元格

2024-12-22 17:30:42
推荐回答(4个)
回答1:

因为 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);
}

回答2:

在cellvalidating事件里面,e.formattedvalue是当前的值,判断如果不符合,则e.cancel=true,没法把焦点移开。

回答3:

try catch

回答4:

返回单元格就好了。,就是判断一下。如果不符合就返回单元格