C# Winform DataGridView中输入一单元格内容 回车 后,它向下走,但如果此单元格值错误,我想仍停在此单元格
代码如何写,C#Winform的注意判断单元格是否错误,是由自己判断的,如是否是手机号码,不是的话,光标仍停在此单元格中不动...
代码如何写,C# Winform的 注意判断单元格是否错误,是由自己判断的,如是否是手机号码,不是的话,光标仍停在此单元格中不动
展开
4个回答
展开全部
因为 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
展开全部
在cellvalidating事件里面,e.formattedvalue是当前的值,判断如果不符合,则e.cancel=true,没法把焦点移开。
追问
谢谢了,你的方法太对了,搞定 非常感 谢
追答
那为什么采纳的不是我呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
try catch
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
返回单元格就好了。,就是判断一下。如果不符合就返回单元格
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询