Недавно я столкнулся с подобной проблемой. Вместо того, чтобы взламывать серверную часть, я реализовал обходной путь, который использует BalloonTipText, который может вместить довольно много символов.
Всплывающая подсказка отображается в первом событии MouseMove поверх значка в области уведомлений, и всплывающая подсказка отображается в течение 2 секунд. Во-вторых, всплывающая подсказка закрыта, ее можно открыть заново новым событием MouseMove.
Единственным недостатком этого решения является невозможность программного закрытия всплывающей подсказки, когда пользователь, скажем, покидает область значков, поэтому он исчезает только по истечении времени ожидания или если пользователь нажимает на маленькую кнопку X .
Обратите внимание, что заголовок и текст могут быть установлены в любое время в другом месте программы. Они установлены здесь только для демонстрационных целей.
РЕДАКТИРОВАНИЕ: ShowBalloonTip()
запускает дополнительные каскадные события MouseMove
, поэтому необходимо отключить это событие до тех пор, пока всплывающая подсказка не будет скрыта. Кроме того, BalloonTipClosed
(в соответствии с документацией ) срабатывает только тогда, когда пользователь активно нажимает на «X», хотя я заметил, что он срабатывает, когда всплывающая подсказка закрывается после истечения времени ожидания. Поэтому я добавил вспомогательный таймер для сброса состояния, вместо того чтобы полагаться на событие BalloonTipClosed
. Пересмотренный и протестированный код ниже:
private bool balloonTipShown;
private Timer balloonTimer;
private void trayIcon_MouseMove(object sender, MouseEventArgs e)
{
if (balloonTipShown)
{
return;
}
balloonTipShown = true;
trayIcon.MouseMove -= trayIcon_MouseMove;
balloonTimer = new Timer();
balloonTimer.Tick += balloonTimer_Tick;
balloonTimer.Interval = 2005;
balloonTimer.Start();
trayIcon.ShowBalloonTip(2000);
}
void balloonTimer_Tick(object sender, EventArgs e)
{
balloonTipShown = false;
balloonTimer.Stop();
balloonTimer.Dispose();
trayIcon.MouseMove += trayIcon_MouseMove;
}
РЕДАКТИРОВАТЬ 2: Скриншот всплывающей подсказки с довольно большим текстом, который использует это решение, можно увидеть в блоге .