【问题标题】:Slow reaction of MouseClick event for NotifyIconNotifyIcon 的 MouseClick 事件反应缓慢
【发布时间】:2015-07-04 15:32:18
【问题描述】:

我注意到 NotifyIcon 的左键单击事件的奇怪行为。

我有这样的代码:

private void notifyIcon2_MouseClick(object sender, MouseEventArgs e)
{
   if (e.Button == System.Windows.Forms.MouseButtons.Left)
      {
            Console.WriteLine("Hello!");
      }
}

问题是在单击托盘字符串“Hello”中的通知图标时不会立即显示,大约需要 0.5 秒(半秒)才能做出反应。这就是为什么我不能为每次点击图标添加某种变量计数器 - 它的反应太慢而无法捕捉所有点击并增加我的变量。

这个问题有什么解决办法吗?我试过 MouseClick、MouseDown、MouseUp 和 Click 事件,它们的反应都很慢。

谢谢!

【问题讨论】:

  • 这可能只是一个控制台问题。尝试打开一个 MessageBox。
  • 感谢您的回复!我想在notifyicon上点击5次时显示某种消息,例如消息框(控制台编写只是为了测试),但关键是当我点击5次时,它不是这样计算的,因为这个0.5 秒反应(相当于 2 或 3 次)。当然,我可以使用一些不同的方式来显示 MessageBox,例如,创建一些菜单,但是 NotifyIcon 事件的行为对我来说似乎很奇怪,我只是想知道是什么导致了这种反应。
  • 我没有注意到我的 NotifyIcon 有任何延迟。
  • 如果您点击太快,您将生成 MouseDoubleClick 事件。很难看出重点是什么。
  • 哇,谢谢,这确实是我的问题的原因,通过实现 DoubleClick 事件解决了它。

标签: c# .net events click notifyicon


【解决方案1】:

我认为这与他们here 的这个小评论有关(我知道这不是 NotifyIcon)。

请注意,LeftClickCommand 会在短暂延迟后触发(与立即触发的 DoubleClickCommand 相反)。这是因为在第一次单击和第二次单击之间存在时间跨度,操作系统将鼠标操作视为双击。 NotifyIcon 足够聪明,可以等待这段时间,以确保仅当用户在该时间段内没有第二次点击时才会触发 LeftClickCommand。

我试过了,这种延迟也出现在表单本身上。这就是这个事件的运作方式。

【讨论】:

  • 感谢您的回答!我刚刚为 notifyIcon2_DoubleClick 事件复制了我的事件,现在它工作得非常完美。感谢您的澄清!
【解决方案2】:

在我只希望单击打开 NotifyIcon 的弹出窗口的情况下,为 DoubleClick 事件实现处理程序并不是一个解决方案。

我在代码完成中发现了 NoLeftClickDelay 属性,它可以让事情按预期工作。

TaskbarIcon tbIcon = (TaskbarIcon)FindResource("MyNotifyIcon");
tbIcon.NoLeftClickDelay = true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 2012-02-12
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    相关资源
    最近更新 更多