2011-01-12 3 views
0

Windowsフォーム/ C#/ Net Framework 2.0でNotifyIconを使用する場合、にバルーンチップテキストを表示する場合またはをクリックします。イベント、のDoubleClickまたはMouseDoubleClickのどれイベントになる火災:C#、Windowsフォーム:ShowBalloonTipでのShowBalloonTipのNotifyIcon

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); 
     } 
    } 

私は通知アイコンをダブルクリックすると、私はバルーンヒントが二回リフレッシュ/認められなかったが、何のメッセージボックスを取得。

私はVisual Studio 2010とWindows 7 Ultimate 64ビットを使用しています。

ありがとうございました!

+1

あなたのコードは私のPC上で稼働しています。あなたの 'ダブルクリックスピード'を確認することをお勧めします –

+0

"ダブルクリックスピード"と言えば、Windowsの設定を意味しますか? – AnAurelian

答えて

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); 
      } 
     } 
    } 
+1

ありがとう、私はあなたの提案を試みましたが、ダブルクリックしていてもe.Clicksは常に0です。 – AnAurelian

0

でのダブルクリックは、これはおそらくバグであるかどうか確認する必要があります。私は誰が責任があるのか​​分かりません。

e.Clicksは、notifyIcon.ShowBalloonTipの呼び出し時にゼロになります。 showballoontipに無効な引数が与えられた場合、コンソールに例外が書き込まれ、最終的にe.Clicksが1より高くなります。

ファームウェア1.2のLogitech g5マウスを使用しています。 Logitech Setpointソフトウェアではありません。マイクロソフトのドライバにも戻ってくるが、助けにはならなかった。

私はそれは本当に奇妙なバグであるWindows 7の64ビットおよびVisual Studio 2010

、.NETフレームワーク4.0上で実行しています。場合によってはまったく同じビルドでバグが表示されないこともあります。同じセッションで再び発生する可能性があります。再構築の後、バグが再び存在します。

+0

私の修正は、シングルクリックとダブルクリックを区別しないことです。ワンクリックでアプリケーションを開くことができます。ボールインチップはポップアウトされません。 – Harmen

0

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

関連する問題