Действительно, в .Net 2.0 объект ToolTip был изменен. До версии 2.0 возникали некоторые проблемы с несогласованностью, когда текст всплывающей подсказки изменялся во время активной подсказки или в некоторых других ситуациях.
Начиная с версии 2.0, всплывающая подсказка скрывается каждый раз, когда происходит что-то, что может повлиять на текущую активную подсказку.
Хотя это решило некоторые проблемы, теперь оно вызывает некоторые события сразу после, например, SetToolTip (), даже если эта функция была вызвана из этого самого события, что приводит к бесконечному циклу рисования / скрытия всплывающей подсказки, пока мышь не отойдет от области всплывающей подсказки.
Мой собственный обходной путь - проверить, является ли ToolTip уже такой же, и опустить Set ToolTip (), если это так. (простое пропускание следующего события статическим флагом, как предложено выше, может вызвать проблемы, поскольку нет гарантии, что сразу после этого будет новое событие, например, если мышь только что коснулась области всплывающей подсказки и уже удалилась).
Кроме того, использование OnMouseHover только для отображения всплывающей подсказки отключает функцию внутреннего таймера компонента ToolTip, а также вызывает много ненужных событий и, следовательно, тратит впустую процессорное время. Всплывающее событие компонента ToolTip также служит отправной точкой.
Однако в этом особом случае OnMouse Hover необходим для отслеживания движения мыши.
В любом случае изменение положения всплывающей подсказки вызывает полную перерисовку всплывающей подсказки и, следовательно, мерцание. Это может быть уменьшено для неподвижной мыши, проверяя, изменилось ли положение мыши между двумя событиями.
К сожалению, компонент ToolTip не может изменить положение всплывающей подсказки, и он всегда отображается относительно текущей позиции мыши. Поэтому единственный способ заставить его следовать за мышью - закрыть и перерисовать его.
МОЖЕТ помочь установить для свойств UseFading и / или UseAnimation значение false, чтобы мерцание можно было еще больше уменьшить.