0

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

提前感谢您的帮助!

4

3 回答 3

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);
          }
        }
    }
于 2011-01-12T15:39:02.107 回答
0

这可能是一个错误。我不知道该怪谁。

e.Clicks 在调用 notifyIcon.ShowBalloonTip 时归零。如果给 showballoontip 一个无效参数,则会将异常写入控制台,并且 e.Clicks 最终会高于 1。

我正在使用固件 1.2 的罗技 g5 鼠标。它不是罗技设定点软件。回滚到微软驱动程序也没有帮助。

我在 .NET 框架 4.0、Windows 7 64 位和 Visual Studio 2010 上运行。

这是一个非常奇怪的错误。有时完全相同的构建有时不会显示错误。在同一个会话中,它可以再次发生。重建后,错误再次出现。

于 2013-02-27T18:19:43.300 回答
0

这确实是一个错误。我找到了比任何建议更好的解决方法。不要尝试从 Click 或 DoubleClick 事件中启动 BalloonTip。相反,您可以全局创建一个布尔标志,然后在 Click 事件中设置该标志。还创建一个定期触发的 Timer(),每 1000 毫秒对我来说很好。当计时器触发时,它会检查标志,如果已设置,则相应地触发 ShowBalloonTip(),同时重置标志。这不会破坏 Click 或 DoubleClick 行为,并且仍然可以通过 NotifyIcon 上的 Click 或 DoubleClick 事件中发生的更改实现 BalloonTip 的所需行为。对我来说很棒!抱歉,我没有很容易提供的代码片段,但这个描述应该给出如何轻松做到这一点的想法。

于 2014-11-08T07:43:29.307 回答