在Windows /C#/.NET Framework2.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 2010和Windows 7终极64位.
提前感谢您的帮助!
发布于 2011-01-12 15:39:02
您需要检查一下是否是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);
}
}
}发布于 2013-02-27 18:19:43
这可能是个窃听器。我不知道该怪谁。
e.Clicks在调用notifyIcon.ShowBalloonTip时为零。如果向显示气球提示提供了无效的参数,则会将异常写入控制台,e.Clicks最终将超过1。
我正在使用的罗技g5鼠标固件1.2。这不是罗技设置点软件。回滚到微软的驱动程序,也没有帮助。
我正在运行.NET框架4.0、windows 7 64位和Visual 2010。
这是个很奇怪的虫子。有时,完全相同的构建有时不会显示错误。在同一会话中,可以再次发生这种情况。重建之后,bug再次出现。
发布于 2014-11-08 07:43:29
这确实是个虫子。我找到了一个比任何建议都好的解决办法。根本不要尝试从Click或DoubleClick事件中启动该DoubleClick。相反,您可以全局创建一个布尔标志,然后在Click事件中设置标志。还创建一个定期触发的Timer(),对我来说,每1000毫秒就可以了。当计时器触发时,它会检查标志,如果设置了标志,则相应地触发ShowBalloonTip(),并重置标志。这不会破坏单击或DoubleClick行为,并且仍然可以通过在NotifyIcon上的Click或DoubleClick事件中发生的更改来实现BalloonTip所需的行为。对我来说很好!对不起,我没有很容易提供的代码片段,但是这个描述应该给出如何轻松地完成它的想法。
https://stackoverflow.com/questions/4670506
复制相似问题