在线等待,datagridview 焦点迁移,单元格着色的问题

mike689689 2008-05-07 05:57:16
环境:VB.NET(WINFORM)
实现功能:datagridview里面对编辑的单元格做验证功能,如果验证未通过,着色,焦点不迁移

我用了以下方法实现,可实现焦点不迁移,但是当前处于编辑状态的单元格无法上色,请各位大虾不吝赐教!!

Private Sub DataGridView1_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating

If e.ColumnIndex = 2 AndAlso e.RowIndex = 2 _
AndAlso DataGridView1.Rows(2).Cells(2).Value = "ab" Then
DataGridView1.Rows(2).Cells(2).Style.BackColor = Color.Blue
e.Cancel = True
Exit Sub
End If

End Sub
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinboody 2008-05-08
  • 打赏
  • 举报
回复
7樓說的好.
mike689689 2008-05-08
  • 打赏
  • 举报
回复
1楼的大哥,不知道你在说什么,而且你给东西在我的联机帮助里打不开
2楼的兄弟,不是我想要得,是客户就这么变态
3楼的弟兄,这个方法我试过,一样不能着色
5楼的兄台,你的这个想法我在DataGridView1_CellPainting里面遍历过,不行
似乎只要E.CANCEL,处于激活状态的单元格就不能再做任何操作

谢谢各位热心帮助
tangzhaoyong 2008-05-08
  • 打赏
  • 举报
回复
对 不移动焦点 这个有点不合理,但是好像还是可以实现的
你遍历你要检查的那个单元格,若出现不合法 就将其背景色设置
this.DataGridView1.Rows[i].DefaultCellStyle.BackColor=Color.Green;
这样就好了
beijing__2008 2008-05-08
  • 打赏
  • 举报
回复
之后 妈的打错了
beijing__2008 2008-05-08
  • 打赏
  • 举报
回复
你把着色的那段代码DataGridView1.Rows(2).Cells(2).Style.BackColor = Color.Blue放在e.Cancel = True 之前
llsus 2008-05-08
  • 打赏
  • 举报
回复
我觉得你的设计思路不是太好,你着色的目的无法是为了提醒用户输入的数据是非法的,那么你为什么不让移动焦点呢?只有移动了焦点才提醒不是更合理吗?这样做要容易的多。如果你不让移动焦点根本无需着色啊?因为输入不合法根本就无法离开的编辑的Cell,又来着色不是多此一举吗?反而为编程带来更大的难处。
tjficcbw 2008-05-07
  • 打赏
  • 举报
回复
如何:通过扩展 Windows 窗体 DataGridView 控件中单元格和列的行为和外观对其进行自定义
MSDN地址:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxmclictl/html/9b7dc7b6-5ce6-4566-9949-902f74f17a81.htm#codeExampleSection

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧