Оказывается, что ToolTip
компонент не будет показывать подсказку во второй раз, если истекло время первой подсказки.
Я полагаю, что это "особенность", а не ошибка, но я согласен, что это не ожидаемое поведение для многих людей. Об этом сообщили в Microsoft , который считает, что это "слишком сложный случай, чтобы инвестировать в его исправление".
Ответы на этот похожий вопрос предлагают некоторые возможные обходные пути, хотя я лично не пробовал ни одного из них, потому что мне никогда не требовалась всплывающая подсказка, которая отображалась так долго, что время ожидания истекло.
Первый обходной путь, который я бы предложил вам попробовать, - это то, что предлагает ответ Кевина: установите для свойства Active
компонента ToolTip
значение False, а затем верните значение True в событии MouseEnter
для каждого элемента управления, который вы хотите отобразить. сказал всплывающую подсказку. Это в основном «перезагрузит» компонент и переопределит «функцию», которая заставляет его не показываться второй раз, когда он истекает в первый раз.
Некоторые другие предложения, предложенные в ответах, достигают того же результата несколько иным (и более бессмысленным) способом: создавая новый ToolTip
компонент каждый раз, когда пользователь перемещает мышь над контролем. На самом деле нет причин, по которым это лучше или что оно будет работать, если вышеупомянутое предложение не сработает.
Что касается того, почему всплывающая подсказка перестает работать только через 30 секунд, то фактическое максимальное время ожидания составляет примерно 32 секунды. Компонент, предоставляемый .NET Framework, является просто оболочкой для всплывающей подсказки Win32, которую документация раскрывает как источник произвольного ограничения. Значение времени ожидания указывается в виде 16-разрядного значения со знаком, которое принимает максимальное значение только 32767, что означает задержку чуть более 32 секунд. Раймонд Чен также опубликовал запись в блоге об этом точном поведении.