C# 正在消失的系统托盘图标
我正在visual studio 2010中使用C#创建一个系统托盘应用程序 当应用程序启动时,我创建线程和系统托盘图标。但是,每当我将鼠标移到图标上时,图标就会消失(应用程序仍在运行),即使我单击按钮显示所有隐藏的图标,它也不会显示 但是,如果我不尝试将鼠标移到它上面,那么它将留在系统托盘中 有什么想法或经历吗 提前谢谢C# 正在消失的系统托盘图标,c#,windows,visual-studio,desktop-application,system-tray,C#,Windows,Visual Studio,Desktop Application,System Tray,我正在visual studio 2010中使用C#创建一个系统托盘应用程序 当应用程序启动时,我创建线程和系统托盘图标。但是,每当我将鼠标移到图标上时,图标就会消失(应用程序仍在运行),即使我单击按钮显示所有隐藏的图标,它也不会显示 但是,如果我不尝试将鼠标移到它上面,那么它将留在系统托盘中 有什么想法或经历吗 提前谢谢 谢谢你们的回答 嗯,我以前做过一些修正,尽管对那些好奇的人来说 我最初并没有使用windows窗体,这就是问题发生的时候。但是,当我将我的应用程序设置为windows窗体,
谢谢你们的回答 嗯,我以前做过一些修正,尽管对那些好奇的人来说
我最初并没有使用windows窗体,这就是问题发生的时候。但是,当我将我的应用程序设置为windows窗体,只隐藏窗体而不在任务栏中显示时,它就工作了。这意味着托盘图标已被删除。这通常发生在进程终止后,但托盘仍停留在那里-这是一个windows错误 因此,出于某种原因,您的托盘图标可能会“崩溃”
如果没有看到您的代码,就不可能对其进行进一步的注释。如果您正在创建图标对象,并且在没有任何引用的情况下让它超出范围,则下一次垃圾回收将调用它的析构函数,这将发生。将此代码粘贴到表单类中:
protected override void OnFormClosing(FormClosingEventArgs e) {
notifyIcon1.Visible = false;
base.OnFormClosing(e);
}
这确保图标将消失,而不会在托盘中停留。现在在代码上设置一个断点,并找出表单关闭的原因。如果您无法找出原因,请将堆栈跟踪复制并粘贴到问题中。当Windows资源管理器重新启动时,Windows将清除通知区域中的所有图标,并发送广播消息TaskbarCreated。必须使用该消息再次添加通知图标 您可以使用以下代码来侦听事件:
UINT WM_TaskBarCreated = ::RegisterWindowMessage(L"TaskbarCreated");
并使用windowproc或MessageHandler将图标添加回通知区域 当您将鼠标悬停在图标上时,是否确定显示图标的进程仍在运行?