5

プログラムに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

バルーンチップを永遠に見えるようにする方法は?

4

2 に答える 2

7

MSDNから:

最小タイムアウト値と最大タイムアウト値はオペレーティングシステムによって適用され、通常はそれぞれ10秒と30秒ですが、これはオペレーティングシステムによって異なる場合があります。大きすぎるまたは小さすぎるタイムアウト値は、適切な最小値または最大値に調整されます。さらに、ユーザーがコンピューターを使用していないように見える場合(キーボードまたはマウスのイベントが発生していない場合)、システムはこの時間をタイムアウトにカウントしません。

最大タイムアウト(最終的にはWindowsによって調整され、より長いタイムアウトを指定しても30秒に制限されます)をオーバーライドすることはできないようです。そのため、通知はフェードアウトし、2分後にクリックするのを待ちません。

本当に別の動作をしたい場合は、おそらく他のオブジェクトや他のオブジェクトを使用するか、動作を完全に制御でき、コードから好きなように表示、非表示、閉じることができるフォームと同様の何かをシミュレートする必要があります。

于 2011-09-17T12:32:17.547 に答える
7

クリックされていない場合は、再度表示できます。クローズイベント(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;
    (..)
}
于 2013-04-18T12:26:16.977 に答える