Вопрос по c# – Подсказка C # не появляется на «Show»

9

Чтобы выполнить требование, я должен показать подсказку вручную в течение 30 секунд. В соответствии с MSDN мне просто нужно использовать «Показать» метод.

toolTip.Show(QuestionHelpText, btnHelp, 30000);

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

toolTip.Show(QuestionHelpText, btnHelp);

но все равно ничего не происходит.

У кого-нибудь есть идея, почему это так?

Спасибо

Ваш Ответ

3   ответа
12

Я знаю простой обходной путь

Поместите ярлык (назовите егоlabelHelp) с пустым текстом рядом с вашей кнопкой

Следующий код должен работать

    private void btnHelp_Click(object sender, EventArgs e)
    {
        toolTip.Show(QuestionHelpText, labelHelp, 3000);
    }
почему он работает на ярлыке, а не на кнопке? lostiniceland
Я использовал его в другом обработчике другого элемента управления, и он по-прежнему не отображается
Хорошо. причина, по которой он не работал для меня, заключалась в том, что я использовал его вform_load событие. Поэтому я изменил это наform_shown и теперь мне даже не нужен элемент управления ярлыком, чтобы помочь мне в этом. Теперь он работает нормально.
Благодарю. теперь это понятно lostiniceland
это будет работать для любого контроля. Роб сказал правильно, что toolTip.Show является методом блокировки. поэтому, когда он используется внутри обработчика событий (т.е. внутри btnHelp_Click) того же элемента управления, он не будет работать должным образом. хитрость заключается в вызове toolTip.Show для другого элемента управления. Другим обходным решением может быть таймер и запуск toolTip.Show асинхронно (например, в btnHelp_Click вы запускаете таймер на 0,1 сек, а затем вызываете toolTip.Show в событии timer). Использование второго элемента управления выглядит для меня как самый простой обходной путь.
0

Я думаю, вам нужно установить свойство initialDelay всплывающей подсказки

3

Где находится & quot; подсказка & quot; объявили?

MSDN не указывает (наToolTip.Show Метод документации) что метод Show является блокирующим вызовом, поэтому, если вы объявите toolTip в методе, а затем сразу же выйдете из метода, то toolTip выпадет из области видимости, в результате чего он не будет визуализироваться или исчезнет.

Подсказка используется в usercontrol, поэтому она объявлена в InitializeComponent lostiniceland

Похожие вопросы