Как увеличить время отображения всплывающих подсказок заголовка столбца DataGridView? - PullRequest
0 голосов
/ 17 мая 2018

В настоящее время я устанавливаю всплывающие подсказки для заголовков столбцов DGV следующим образом:

dgv.Columns (1) .ToolTipText = "Некоторый текст"

В настоящее время текст будет отображаться около 5 секунд. Я хочу увеличить его до 10 секунд. Я настраиваю подсказки таким образом, потому что для каждого из моих DataGridView у меня будет около 20 отдельных заголовков подсказок для 20 столбцов.

1 Ответ

0 голосов
/ 18 мая 2018

Насколько я знаю, нет общедоступного свойства, которое позволило бы вам изменить ToolTip.AutoPopDelay . Вам придется прибегнуть к Reflection и исходному коду DataGridView , чтобы взломать решение.

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, для которого вы хотите изменить задержку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...