Сделайте видимым baloonTipText, пока он не будет нажат - PullRequest
5 голосов
/ 17 сентября 2011

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

notifyIcon1.Icon = new Icon(SystemIcons.Application, 40, 40);
notifyIcon1.Visible = true;
notifyIcon1.Text = "Test Notify Icon Demo";
notifyIcon1.BalloonTipText =count+ " Alerts";
notifyIcon1.BalloonTipIcon = ToolTipIcon.Info;
notifyIcon1.BalloonTipTitle = "Alert!";
notifyIcon1.ShowBalloonTip(999999999);

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

Как сделать так, чтобы воздушный шарик был виден навсегда?

Ответы [ 2 ]

7 голосов
/ 18 апреля 2013

Вы можете показать его снова, если на него не нажимали. У вас есть событие закрытия (BalloonTipClosed), если пользователь не нажал на него, просто покажите его снова.

private void ShowBalloonTip(int minutes) {
    notifyIcon.BalloonTipIcon = ToolTipIcon.Error;
    notifyIcon.BalloonTipText = "Text";
    notifyIcon.BalloonTipTitle = "Title";
    notifyIcon.ShowBalloonTip(minutes* 60 * 1000);
    m_showUntil = DateTime.Now.AddMinutes(minutes);
}


private void notifyIcon_BalloonTipClosed(object sender, EventArgs e) {
    if (m_showUntil > DateTime.Now)
        notifyIcon.ShowBalloonTip(60 * 1000);
}
private void notifyIcon_BalloonTipClicked(object sender, EventArgs e) {
    m_showUntil = DateTime.MinValue;
    (..)
}
7 голосов
/ 17 сентября 2011

из MSDN:

Минимальные и максимальные значения тайм-аута применяются операционной система и, как правило, 10 и 30 секунд, соответственно, однако это может варьироваться в зависимости от операционной системы. Значения времени ожидания, которые слишком большие или слишком маленькие, отрегулированы до соответствующего минимума или максимальное значение Кроме того, если пользователь не использует компьютер (никаких событий клавиатуры или мыши не происходит), то система не считает это время по истечении времени ожидания.

кажется, что невозможно переопределить максимальное время ожидания (в конечном счете, настроенное Windows и ограниченное 30 секундами, даже если вы укажете более длительное время), поэтому уведомление исчезнет и не будет ждать, пока вы щелкните по нему через 2 минуты. .

если вы действительно хотите иметь другое поведение, вам, вероятно, следует использовать что-то другое, другие объекты или моделировать что-то похожее с формами, где у вас есть полный контроль над поведением, и вы можете показывать, скрывать и закрывать по своему желанию из своего кода .

...