Как отобразить всплывающую подсказку для текстового поля при наведении курсора мыши в Windows Forms PowerShell? - PullRequest
0 голосов
/ 28 апреля 2020

Может кто-нибудь показать мне пример того, как добавить подсказку при наведении мыши на текстовое поле в форме Powershell windows? Спасибо за вашу помощь!

Извиняюсь за то, что не разместил мой код прямо здесь, но я продолжаю получать сообщение об ошибке каждый раз перед отправкой.

Код можно найти здесь https://drive.google.com/file/d/1u7r_vaMh8sEsAWsXLcFtxfAXtYTcURj2/view?usp=sharing

1 Ответ

1 голос
/ 28 апреля 2020

Продолжая свой предыдущий вопрос о том же проекте, я бы порекомендовал добавить еще одну вспомогательную функцию для обработки обоих элементов управления текстовым полем:

function Show-ToolTip {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, Position = 0)]
        [System.Windows.Forms.Control]$control,
        [string]$text = $null,
        [int]$duration = 1000
    )
    if ([string]::IsNullOrWhiteSpace($text)) { $text = $control.Tag }
    $pos = [System.Drawing.Point]::new($control.Right, $control.Top)
    $obj_tt.Show($text,$form, $pos, $duration)
}

Я бы также предложил сохранить текст по умолчанию для всплывающей подсказки в свойстве Tag для каждого текстового поля. Вы всегда можете изменить это динамически в событиях MouseEnter:

$txt_one.Tag = "Testing my new tooltip on first textbox"
$txt_two.Tag = "Testing my new tooltip on second textbox"

Затем добавьте обработчики событий для этих полей:

# event handlers for the text boxes
$txt_one.Add_GotFocus({ Paint-FocusBorder $this })
$txt_one.Add_LostFocus({ Paint-FocusBorder $this })
$txt_one.Add_MouseEnter({ Show-ToolTip $this })   # you can play with the other parameters -text and -duration
$txt_one.Add_MouseLeave({ $obj_tt.Hide($form) })

$txt_two.Add_GotFocus({ Paint-FocusBorder $this })
$txt_two.Add_LostFocus({ Paint-FocusBorder $this })
$txt_two.Add_MouseEnter({ Show-ToolTip $this })
$txt_two.Add_MouseLeave({ $obj_tt.Hide($form) })

и ниже [void]$form.ShowDialog() распоряжение объекта всплывающей подсказки тоже:

# clean-up
$obj_tt.Dispose()
$form.Dispose()

PS Во время тестирования я обнаружил, что использование события MouseHover приводило к странным вещам при отображении всплывающей подсказки. Время от времени стрелка указывала вверх от текстового поля. Переход на MouseEnter в сопровождении MouseLeave работал лучше всего для меня.


Согласно вашему комментарию, я не могу проверить в PS 7, но для меня в PS 5.1 это работает:

enter image description here


Благодаря Полу Вассерману , который обнаружил, что должна быть настройка реестра в
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\
имя EnableBalloonTips.
Это значение DWORD, которое должно быть установлено на 1. Если на вашем компьютере отсутствует это значение реестра или для него установлено значение 0, NO, всплывающие подсказки в стиле шара не отображаются .

...