c# - 在 C# 中区分 Click 和 DoubleClick 事件

标签 c# winforms events

我目前有一个 NotifyIcon 作为 Windows 窗体应用程序的一部分。我想在双击图标时显示/隐藏表单,并在单击时显示气球提示。我有两个功能分开工作,但我找不到让应用程序区分单击和双击的方法。现在,它将双击视为两次点击。

如果检测到第二次点击,是否有办法阻止单击事件?

最佳答案

不幸的是建议处理MouseClick事件不适用于 NotifyIcon类 - 在我的测试中 e.MouseClicks始终为0,从reference source也可以看出.

我看到的比较简单的方法是延迟处理Click使用表单级别标志的事件,async处理程序和 Task.Delay :

bool clicked;

private async void OnNotifyIconClick(object sender, EventArgs e)
{
    if (clicked) return;
    clicked = true;
    await Task.Delay(SystemInformation.DoubleClickTime);
    if (!clicked) return;
    clicked = false;
    // Process Click...
}

private void OnNotifyIconDoubleClick(object sender, EventArgs e)
{
    clicked = false;
    // Process Double Click...
}

唯一的缺点是在我的环境中处理 Click延迟半秒(DoubleClickTime 是 500 毫秒)。

关于c# - 在 C# 中区分 Click 和 DoubleClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44184040/

相关文章:

c# - 如何监控插件工作

Javascript事件,参数 "e"、 "event"或其他

C# - 将公钥 blob 导入 ECDiffieHellmanCng

c# - 失去焦点时窗口闪烁?

c# - 在不重新启动应用程序的情况下应用更新

c# - 单线程应用程序是否只在一个 CPU 上运行

c# - 在 C#3 和 C#4 中是否有更简洁的方法来定义自定义事件?

c# - 测试一个方法是否被覆盖?

c# - Crystal 报表询问用户名和密码

c# - 如何在 C#.NET 中从 MS Word 访问图像名称?