2011-01-12 72 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,但这个描述应该给出如何轻松完成的想法。