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

代码如何写,C#Winform的注意判断单元格是否错误,是由自己判断的,如是否是手机号码,不是的话,光标仍停在此单元格中不动... 代码如何写,C# Winform的 注意判断单元格是否错误,是由自己判断的,如是否是手机号码,不是的话,光标仍停在此单元格中不动 展开
 我来答
百度网友ae3233c
2013-08-11 · TA获得超过1175个赞
知道小有建树答主
回答量:1329
采纳率:0%
帮助的人:479万
展开全部

因为 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);
}
追问
this.dataGridView1.CurrentCell的值永远是空的,因为处理编辑状态
你的方法是错的,搞不定,在没提交前dataGridView1[colNo,rowNo]的值永远是空的,没法用,编辑模式下,得到的值是空值
追答

我只是提供了 "回车 后,它向下走,......,我想仍停在此单元格" 的解决方法, 这个解决方法是没有错的.

 

如果你在编辑状态下要取到正在编辑的值, 不应该去取 CurrentCell.Value, 而是取

// 获取该单元格的当前格式化值,而不考虑该单元格是否处于编辑模式,也不论是否尚未提交此值。

CurrentCell.EditedFormattedValue
阳光的雷咩咩
2013-08-11 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7840万
展开全部
在cellvalidating事件里面,e.formattedvalue是当前的值,判断如果不符合,则e.cancel=true,没法把焦点移开。
追问
谢谢了,你的方法太对了,搞定 非常感 谢
追答
那为什么采纳的不是我呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
任潇潇7089
2013-08-11 · TA获得超过1336个赞
知道小有建树答主
回答量:327
采纳率:0%
帮助的人:270万
展开全部
try catch
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ab...y@163.com
2013-08-11
知道答主
回答量:50
采纳率:0%
帮助的人:16.5万
展开全部
返回单元格就好了。,就是判断一下。如果不符合就返回单元格
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式