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

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

toolTip.Show(QuestionHelpText, btnHelp, 30000);

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

toolTip.Show(QuestionHelpText, btnHelp);

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

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

Спасибо

Ответы на вопрос(3)

Решение Вопроса

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

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

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

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

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

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

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

 lostiniceland06 июл. 2009 г., 11:43
Подсказка используется в usercontrol, поэтому она объявлена в InitializeComponent

Ваш ответ на вопрос