![](/img/trans.png)
[英]mouse click event fires before mouse double click event on notifyicon winforms c#
[英]C#, Windows Forms: NotifyIcon with ShowBalloonTip in Click event no longer fires the DoubleClick event
在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);
}
}
如果我雙擊通知圖標,則會顯示兩次氣球提示(顯示/刷新),但沒有消息框。
我正在使用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.