bennyking 发表于 2022-11-21 14:01:01

当鼠标悬浮在C1TrueDBGrid的某字段时候,如何能用C1TrueDBDropdown 显示呢(不点击)

本帖最后由 bennyking 于 2022-11-21 14:26 编辑

您好:
我想实现以下这个功能
当鼠标悬浮在C1TrueDBGrid的某字段时候,如何能用C1TrueDBDropdown 显示呢(不点击)?

C1TrueDBDropdown 控件可以在不C1TrueDBGrid不点击下以tips形式显示(不修改数据,只查看)吗?
我的想法是不点击,然后从数据库上调取数据,看tips就能显示详细信息。

经测试,用C1TrueDBDropdown 控件的方法,我是没事项,如果行的话,能给个例程看看吗?

我现在用得这种方法实现,以下这种方法,能实现,但是费劲。还要拼接字符串。


Private Sub C1TrueDBGrid1_FetchCellTips(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchCellTipsEventArgs) Handles C1TrueDBGrid1.FetchCellTips
      If e.Row >= 0 Then
            If e.ColIndex >= 0 Then
                If IsDBNull(C1TrueDBGrid1.Item(e.Row, e.ColIndex)) = False Then
                  e.CellTip = C1TrueDBGrid1.Item(e.Row, e.ColIndex)
                  Dim s As String = ""
                  s = s & "近期领用的设备详情:" & vbCrLf
                  s = s & "" & vbCrLf
                  s = s & "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" & vbCrLf
                  s = s & "┃领用日期   | 设备类型".PadRight(20) & "    |       名称|型号| 信科固定资产 | 财务固定资产 | 备注" & vbCrLf
                  s = s & "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫" & vbCrLf
                  s = s & "┃2021-11-13 |设备类型    |       名称|型号| 信科固定资产 | 财务固定资产 | 备注┃" & vbCrLf
                  s = s & "┃2021-11-13 |设备类型    |       名称|型号| 信科固定资产 | 财务固定资产 | 备注┃" & vbCrLf
                  s = s & "┃2021-11-13 |设备类型    |       名称|型号| 信科固定资产 | 财务固定资产 | 备注┃" & vbCrLf
                  s = s & "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" & vbCrLf
                  e.CellTip = s
                End If
            End If
      End If
    End Sub



除了FetchCellTips和C1TrueDBDropdown ,您知道还有其它方法实现吗?比如用 C1TreeView 控件可以吗?谢谢,如果有例程,就更好了。



Richard.Ma 发表于 2022-11-21 14:01:02

其实就是直接显示一个子控件出来,C#的话这样写,你可以看看对应的VB写法

//初始化时候
Panel panel = new Panel();
panel.Visible = false;
c1TrueDBGrid1.Controls.Add(panel);


事件中
            panel.Location = new Point(e.Location.X+3, e.Location.Y+3);
            
            panel.Visible = true;

Richard.Ma 发表于 2022-11-21 16:53:48

暂时想不到其他办法,控件有提供mousemove事件,但是没有办法获取当前是在哪个单元格,否则你可以自己弹一控件出来显示

bennyking 发表于 2022-11-21 19:47:34

Richard.Ma 发表于 2022-11-21 16:53
暂时想不到其他办法,控件有提供mousemove事件,但是没有办法获取当前是在哪个单元格,否则你可以自己弹一 ...

R老师,我已经找到在mousemove事件里的方法,判断鼠标现在的点位是在几行几列,方便教我下,如何在鼠标规定的列位置,外挂C1treeview 或者其他控件,显示我所需要的信息吗?

    Private Sub C1TrueDBGrid1_MouseMove(sender As Object, e As MouseEventArgs) Handles C1TrueDBGrid1.MouseMove
      If C1TrueDBGrid1.PointAt(e.X, e.Y) = C1.Win.C1TrueDBGrid.PointAtEnum.AtDataArea Then
            Label8.Text = "第" & C1TrueDBGrid1.RowContaining(e.Y) & "行,【" & C1TrueDBGrid1.Columns(C1TrueDBGrid1.ColContaining(e.X)).Caption & "】列"
      End If
    End Sub

万分感谢。

bennyking 发表于 2022-11-24 07:42:05

Richard.Ma 发表于 2022-11-22 01:35
其实就是直接显示一个子控件出来,C#的话这样写,你可以看看对应的VB写法




感谢老师,热心解答

Richard.Ma 发表于 2022-11-24 09:22:14

不客气
页: [1]
查看完整版本: 当鼠标悬浮在C1TrueDBGrid的某字段时候,如何能用C1TrueDBDropdown 显示呢(不点击)