C# 可以超时的不引人注目的警报通知

C# 可以超时的不引人注目的警报通知,c#,.net,user-interface,usability,C#,.net,User Interface,Usability,在我使用的应用程序中,如果用户将单元格中的值从正值更改为负值,并且该值应始终为正值,则应用程序将强制执行正值。现在,当这种情况发生时,不会向用户显示警报 我想显示一个不太显眼的提醒,比如新邮件到达outlook时显示的提醒,或者类似的提醒,这样用户就可以被提醒应用程序代表她做了一些事情 我尝试使用NotifyIcon类来实现这一点。但该类的问题似乎是它的超时没有按预期工作。我想显示此警报不超过2秒,且BallonTipText持续时间超过10秒 是否有用于此目的的.NET类? 如果没有,有没有其

在我使用的应用程序中,如果用户将单元格中的值从正值更改为负值,并且该值应始终为正值,则应用程序将强制执行正值。现在,当这种情况发生时,不会向用户显示警报

我想显示一个不太显眼的提醒,比如新邮件到达outlook时显示的提醒,或者类似的提醒,这样用户就可以被提醒应用程序代表她做了一些事情

我尝试使用NotifyIcon类来实现这一点。但该类的问题似乎是它的超时没有按预期工作。我想显示此警报不超过2秒,且BallonTipText持续时间超过10秒

是否有用于此目的的.NET类?
如果没有,有没有其他方法可以这样做?

在这种情况下使用通知图标对我来说似乎是错误的。当用户在单元格中输入内容时,其注意力集中在单元格上。如果在屏幕右下角显示通知,用户很可能会错过它,或者更糟,它会中断他的工作流程

<>您可以考虑向用户编辑的单元格添加气球提示。有点像Windows资源管理器在Vista和Windows 7上显示的气球提示,当您尝试输入文件名中不允许的字符时,重命名文件:


我过去也有过这个问题。我推测超时问题是因为操作系统固定了10秒的最小值和30秒的最大值(或类似的值)。Edit噢,这不包括用户空闲的时间。Edit

我过去使用过以下代码来解决这个问题

我只是想澄清一下 声明一个公共变量,例如名为ballonTipActive的变量,其值为0

插入一个延迟为100ms的禁用计时器控件,并从notifyicon控件的BalloodTipshown创建一个事件

然后


将visible属性设置为false,然后设置为true,可以去掉气球。

如何创建气球尖端?我不知道。这仅仅是从用户体验的角度来看,您可以如何改进交互。但是你可能不得不走P/Invoke路线,Ajax非常适合用户反馈。要创建工具提示/气球,您可以测试这个插件:Ajax桌面应用程序?我对此表示怀疑:)我试着使用ToolTip.Show方法来做这件事。但它不起作用。是否有人做到了这一点?确实,这似乎是常见的解决方法,但请记住,在设置为假/真后,图标将“跳转”到第一个托盘位置
private void ptNotifyIcon_BalloonTipShown(object sender, EventArgs e)
{
    timer1.Enabled = true;
    balloonTipActive = 0;
}

private void timer1_Tick(object sender, EventArgs e)
{

   balloonTipActive++;

   if (balloonTipActive == 40)
   {
     ptNotifyIcon.Visible = false;
     ptNotifyIcon.Visible = true;
     balloonTipActive = 0;
     timer1.Enabled = false;
   }
}