vb.net - 如何增加 DataGridView 列标题工具提示的显示时间?

标签 vb.net winforms

我目前像这样设置 DGV 列标题的工具提示:

dgv.Columns(1).ToolTipText = "一些文本"

目前,文本将显示大约 5 秒。我想将它增加到 10 秒。我正在这样设置我的工具提示,因为对于我的每个 DataGridView,我将有大约 20 个单独的工具提示标题用于 20 列。

最佳答案

据我所知,没有任何公开的属性可以让您更改 ToolTip.AutoPopDelay .您将需要求助于反射和 DataGridView source code破解解决方案。

DataGridView 有一个名为toolTipControl 的字段,它是DataGridViewToolTip 的一个实例。 . DataGridViewToolTip 有一个名为 toolTip 的字段,它是一个 System.Windows.Forms.ToolTip。此字段在 DataGridViewToolTip.Activate 方法中初始化。

使用此信息,可以构造以下代码来更改 AutoPopDelay

Private Shared Sub SetDGVToolTipDelay(dgv As DataGridView)
    Dim fi_toolTipControl As FieldInfo = GetType(DataGridView).GetField("toolTipControl", BindingFlags.Instance Or BindingFlags.NonPublic)
    Dim toolTipControl As Object = fi_toolTipControl.GetValue(dgv)

    Dim fi_ToolTip As FieldInfo = fi_toolTipControl.FieldType.GetField("toolTip", BindingFlags.Instance Or BindingFlags.NonPublic)
    Dim tt As ToolTip = CType(fi_ToolTip.GetValue(toolTipControl), ToolTip)
    If tt Is Nothing Then
        tt = New ToolTip
        tt.ShowAlways = True
        tt.InitialDelay = 0
        tt.UseFading = False
        tt.UseAnimation = False
        fi_ToolTip.SetValue(toolTipControl, tt)
    End If
    tt.AutoPopDelay = 10000 ' 10 seconds
End Sub

只需调用 SetDGVToolTipDelay 并传递要更改延迟的 DataGridView 实例。

关于vb.net - 如何增加 DataGridView 列标题工具提示的显示时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50400129/

相关文章:

c# - Control.ClientRectangle 与 Control.DisplayRectangle

.net - Windows 窗体 : Why does output to textbox of long running algorithm stop after a while?

.net - 使用 Windows 调试工具调试 .NET 2.0 Winforms 应用程序

javascript - 单击与 Javascript 具有相同类名的类按钮

.net - 如何通过索引而不是显式名称访问数据转发器的项目?

c# - 从菜单显示 chm

c# - 如何将数据从数据库加载到组合框中

vb.net - 尝试在 VB.NET 中调用重载构造函数时出现编译器错误

c# - IIS7.5 WCF 服务 - HTTP 错误 401.3(即使在添加 IIS_IUSRS 之后)

javascript - 在后面的代码中获取确认值