簡體   English   中英

C#,Windows窗體:Click事件中帶有ShowBalloonTip的NotifyIcon不再觸發DoubleClick事件

[英]C#, Windows Forms: NotifyIcon with ShowBalloonTip in Click event no longer fires the DoubleClick event

在Windows Forms / C#/。Net Framework 2.0中使用NotifyIcon時,如果我在MouseClickClick事件中顯示氣球提示文本,則不會觸發DoubleClickMouseDoubleClick事件:

    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位。

在此先感謝您的幫助!

您需要檢查是否雙擊了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);
          }
        }
    }

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

e.Clicks在調用notifyIcon.ShowBalloonTip時歸零。 如果為showballoontip提供了無效的參數,則會向控制台寫入異常,並且e.Clicks最終會高於1。

我正在使用固件為1.2的Logitech G5鼠標。 它不是Logitech設定點軟件。 也回滾到Microsoft驅動程序,沒有幫助。

我在.NET Framework 4.0,Windows 7 64位和Visual Studio 2010上運行。

這是一個非常奇怪的錯誤。 有時完全相同的構建有時不會顯示錯誤。 在同一會話中,它可能再次發生。 重建后,該錯誤再次出現。

這確實是一個錯誤。 我發現了比建議的更好的解決方法。 完全不要嘗試從Click或DoubleClick事件中啟動BalloonTip。 而是可以全局創建一個布爾標志,然后在Click事件中設置該標志。 還創建一個定期觸發的Timer(),對我來說每1000ms很好。 當計時器觸發時,它會檢查標志,如果已設置,則相應地觸發ShowBalloonTip(),同時也重置標志。 通過在NotifyIcon上的Click或DoubleClick事件中發生的更改,這不會破壞Click或DoubleClick行為,並且仍然實現了BalloonTip所需的行為。 對我來說很棒! 抱歉,我沒有容易提供的代碼片段,但是此描述應該給出如何輕松實現的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM