visual basic(vb.net)应用C1TrueDBGrid控件如何实现网格区域点选空白区域无操作的应用场景
其实搞这个,比较想骂人,因为这个是客户提的需求,当然,提需求归提需求,都接了,但是无理取闹的找茬,就很恶心了,算了,反正提高自己技能,还是那句话“假如你被狗咬了,难道你还想要回去不成”。场景是这样,由于用了C1TrueDBGrid控件展现表格,而客户提出点击某行,首列的勾选就自动改变状态,一开始我使用的是C1TrueDBGrid.Click事件,但是有个比较麻烦的是,在空白点击,这个事件也是会触发的,所以客户提出点击空白区域=无操作的需求,下面谈谈如何实现。
visual basic(vb.net)应用C1TrueDBGrid控件如何实现网格区域点选空白区域无操作的解决方案
思路就是:改成使用MouseUp事件,然后关联鼠标坐标,获取这个坐标对应单元格坐标,这个单元格坐标的x如果是负数,说明是空白区域,否则是网格内容区域,代码如下:
Private Sub C1TrueDBGrid1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles C1TrueDBGrid1.MouseUp Try Dim Grid As C1.Win.C1TrueDBGrid.C1TrueDBGrid = CType(sender, C1.Win.C1TrueDBGrid.C1TrueDBGrid) rem 使用PointToClient计算鼠标相对于某个控件的坐标 Dim p As Point = Grid.PointToClient(Control.MousePosition) Dim curRowCol As Point = New Point(Grid.ColContaining(p.X), Grid.RowContaining(p.Y)) Dim str As String = String.Format("({0},{1})", curRowCol.Y, curRowCol.X) If curRowCol.X > 0 Then If Me.C1TrueDBGrid1.Columns("选择").Value & "" = "True" Then Me.C1TrueDBGrid1.Columns("选择").Value = 0 Else Me.C1TrueDBGrid1.Columns("选择").Value = 1 End If C1TrueDBGrid1.UpdateData() End If Catch ex As Exception MsgBox(ex.Message + vbCrLf + ex.StackTrace, MsgBoxStyle.Information, My.Application.Info.ProductName) End Try End Sub
visual basic(vb.net)应用C1TrueDBGrid控件如何实现网格区域点选空白区域无操作的结论
通过上面这段代码,就可以很好的实现。
© 版权声明
本文为原创文章,版权归羽化飞翔所有,欢迎分享本文,转载请保留出处!
此外,本网站旨在向广大网友提供任何资源的开发、使用、安装教程,所提供的下载服务仅供学习交流探讨,请广大网友学习完成后,24小时内删除相关资源。如果涉及到侵犯版权事宜,请联系删除资源下载信息,谢谢各位的理解与支持!
THE END
暂无评论内容