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

时间:2018-05-17 20:35:39

标签: vb.net winforms

我目前设置了DGV列标题的工具提示,如下所示:

dgv.Columns(1).ToolTipText =" Some Text"

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

1 个答案:

答案 0 :(得分:1)

据我所知,没有公开的属性可以让你更改ToolTip.AutoPopDelay。您需要求助于Reflection和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实例。