0

Windows Forms / C#/。Net Framework 2.0でNotifyIconを使用しているときに、MouseClickイベントまたはClickイベントにバルーンのヒントテキストを表示すると、DoubleClickまたはMouseDoubleClickイベントは発生しません。

    private void notifyIcon_DoubleClick(object sender, EventArgs e)
    {
        MessageBox.Show("double click"); // this is never called on double-click
    }

    private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        MessageBox.Show("mouse double click"); // this is never called on double-click
    }

    private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            this.notifyIcon.BalloonTipText = "Some Info";
            this.notifyIcon.ShowBalloonTip(1000);
        }
    }

通知アイコンをダブルクリックすると、バルーンチップが2回表示/更新されますが、メッセージボックスは表示されません。

VisualStudio2010とWindows7Ultimate64ビットを使用しています。

助けてくれてありがとう!

4

3 に答える 3

1

ダブルクリックかどうかを確認する必要がありますnotifyIcon_MouseClick

 private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left) 
        {
          if (e.Clicks < 2) //not a doubleclick
          {
              this.notifyIcon.BalloonTipText = "Some Info";
              this.notifyIcon.ShowBalloonTip(1000);
          }
        }
    }
于 2011-01-12T15:39:02.107 に答える
0

これはおそらくバグです。誰のせいなのかわからない。

e.notifyIcon.ShowBalloonTipを呼び出すと、クリック数がゼロになります。showballoontipに無効な引数が指定された場合、例外がコンソールに書き込まれ、e.Clicksは最終的に1より大きくなります。

ファームウェア1.2のlogitechg5マウスを使用しています。これは、ロジクールの設定値ソフトウェアではありません。Microsoftドライバーにもロールバックしましたが、役に立ちませんでした。

.NET Framework 4.0、Windows 7 64ビット、およびVisualStudio2010で実行しています。

それは本当に奇妙なバグです。まったく同じビルドでバグが表示されない場合があります。同じセッションで、それが再び発生する可能性があります。再構築後、バグが再び発生します。

于 2013-02-27T18:19:43.300 に答える
0

これは確かにバグです。私は提案されたものよりも良い回避策を見つけました。ClickイベントまたはDoubleClickイベント内からBalloonTipを起動しようとしないでください。代わりに、ブールフラグをグローバルに作成してから、Clickイベントでフラグを設定できます。また、定期的に起動するTimer()を作成します。これは、1000ミリ秒ごとに問題ありませんでした。タイマーが起動すると、フラグがチェックされ、設定されている場合は、それに応じてShowBalloonTip()が起動され、フラグもリセットされます。これにより、ClickまたはDoubleClickの動作が中断されることはなく、NotifyIconのClickまたはDoubleClickイベント内で発生する変更から、BalloonTipに必要な動作が実現されます。私にとってはうまくいきました!申し訳ありませんが、コードスニペットを簡単に提供することはできませんが、この説明は、それを簡単に行う方法のアイデアを提供するはずです。

于 2014-11-08T07:43:29.307 に答える