找回密码
 立即注册

QQ登录

只需一步,快速开始

bennyking
注册会员   /  发表于:2022-11-21 14:01  /   查看:3207  /  回复:5
1金币
本帖最后由 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 控件可以吗?谢谢,如果有例程,就更好了。



附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

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

5 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-21 14:01:02
来自 4#
其实就是直接显示一个子控件出来,C#的话这样写,你可以看看对应的VB写法

  1. //初始化时候
  2. Panel panel = new Panel();
  3. panel.Visible = false;
  4. c1TrueDBGrid1.Controls.Add(panel);
复制代码


事件中
  1.             panel.Location = new Point(e.Location.X+3, e.Location.Y+3);
  2.             
  3.             panel.Visible = true;
复制代码

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-21 16:53:48
2#
暂时想不到其他办法,控件有提供mousemove事件,但是没有办法获取当前是在哪个单元格,否则你可以自己弹一控件出来显示
回复 使用道具 举报
bennyking
注册会员   /  发表于:2022-11-21 19:47:34
3#
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
5#
Richard.Ma 发表于 2022-11-22 01:35
其实就是直接显示一个子控件出来,C#的话这样写,你可以看看对应的VB写法

感谢老师,热心解答
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-24 09:22:14
6#
不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部