visual basic(vb.net)应用C1TrueDBGrid控件,如何实现网格区域点选,空白区域无操作

第1部分:应用场景

其实搞这个,比较想骂人,因为这个是客户提的需求,当然,提需求归提需求,都接了,但是无理取闹的找茬,就很恶心了,算了,反正提高自己技能,还是那句话“假如你被狗咬了,难道你还想要回去不成”。场景是这样,由于用了C1TrueDBGrid控件展现表格,而客户提出点击某行,首列的勾选就自动改变状态,一开始我使用的是C1TrueDBGrid.Click事件,但是有个比较麻烦的是,在空白点击,这个事件也是会触发的,所以客户提出点击空白区域=无操作的需求,下面谈谈如何实现。

第2部分:解决方案

思路就是:改成使用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控件如何实现网格区域点选空白区域无操作的结论

通过上面这段代码,就可以很好的实现。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容