2011-01-12 70 views
0

當Windows窗體中使用的NotifyIcon/C#/。NET Framework 2.0的,如果我顯示在鼠標點擊點擊氣球提示文字。事件,沒有的DoubleClickMouseDoubleClick的事件將觸發:C#,Windows窗體:NotifyIcon的與Click事件ShowBalloonTip不再觸發DoubleClick事件

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

您的代碼正在我的電腦上工作。我建議檢查你的'雙擊速度' – 2011-01-12 15:49:42

+0

當你說「雙擊速度」,你的意思是在Windows中的設置? – AnAurelian 2011-01-13 12:32:45

回答

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 2011-01-13 12:32:05

0

雙擊這可能是一個錯誤。我不知道應該責怪誰。

e.Clicks在調用notifyIcon.ShowBalloonTip時調零。如果showballoontip被給出無效參數,則將異常寫入控制檯,並且e.Clicks最終會變得高於1.

我正在使用固件版本爲1.2的Logitech g5鼠標。這不是羅技設定軟件。回滾到微軟的驅動程序,也沒有幫助。

我在.NET Framework 4.0中,Windows 7的64位和Visual Studio 2010

這是一個非常奇怪的錯誤運行。有時候,完全相同的版本有時不會顯示錯誤。在同一屆會議上,它可以再次發生。重建後,該錯誤再次出現。

0

這確實是一個錯誤。我找到了比任何建議更好的解決方法。請勿嘗試從Click或DoubleClick活動中啓動BalloonTip。相反,您可以全局創建布爾標誌,然後在Click事件中設置標誌。另外創建一個定時觸發的Timer(),每1000毫秒對我來說都很好。當定時器觸發時,它會檢查該標誌,如果已設置,則會相應地觸發ShowBalloonTip(),並重新設置標誌。這不會中斷Click或DoubleClick行爲,並可通過NotifyIcon上的Click或DoubleClick事件發生的更改來實現BalloonTip所需的行爲。爲我工作很好!對不起,我沒有很容易提供的代碼snipet,但這個描述應該給出如何輕鬆完成的想法。