Updating The .Text of the TrayNotifyIcon

本文关键字:the TrayNotifyIcon of Text The Updating | 更新日期: 2023-09-27 18:07:08

我目前正在使用TrayNotifyIcon的.Text来显示状态显示,当用户将鼠标放在它上面时(对于进程的百分比完成)

因此我只设置:TrayNotifyIcon。文本到适当的完成百分比。示例(以下代码是我使用的代码的一部分,我在其中创建了一个新线程,该线程在子进程变量中设置,如果它完成与否,以及完成的百分比是多少。下面的代码将显示为TrayNotifyIcon。文本每秒钟更新的子进程完成了多少%):

while (subprocess.NotCompleted)
{    
     TrayNotifyIcon.Text = "TextToUpdateTo....." + subprocess.percent.ToString() + "% completion";  
     Thread.Sleep(1000);
}

现在我已经看到,它只在我移动鼠标时更新显示,而不会在我适当地设置. text时更新显示。

因此,我的问题是,是否有任何方法可以使它,以便我可以告诉系统更新正在显示的文本?

Updating The .Text of the TrayNotifyIcon

当鼠标悬停在通知图标上时,系统显示提示文本。这篇文章预计不会是动态的。文本的显示由系统处理。当它想要显示提示时,它会查询图标中的文本,然后显示它。它不会返回并检查文本是否已更改,也没有机制通知系统文本已更改并应更新。这是shell (Shell_NotifyIcon)的特性,而不是。net库中的任何特性。

因此,使用TrayNotifyIcon的香草形式,没有什么可以改变这种行为。如果你真的想动态更新提示文本,你将不得不抑制系统绘制的提示(通过将Text设置为空字符串),并绘制自己的提示窗口。您需要检测鼠标悬停在图标上,并检测它何时离开图标。

坦率地说,我不认为这真的是一个很好的用户体验设计。如果我是你,我会找到一种不同的方式让用户接收到这些反馈。