2010-09-24 92 views
2

我使用C#在visual studio 2010中创建系统托盘应用程序。消失系统托盘图标

当应用程序启动时,我创建了我的线程和系统托盘图标。无论何时我将鼠标移到图标上,它都会消失(应用程序仍在运行),即使我单击显示所有隐藏图标的按钮,它也不会显示。

但是,如果我不试图将鼠标悬停在上面,那么它将保留在系统托盘中。

任何想法或经验?

在此先感谢


感谢您的答案家伙。

呃,这是我之前修复过的,虽然对于那些也许好奇的人来说。

我最初没有使用Windows窗体,这是发生问题的时候。但是,当我将我的应用程序设置为一个窗体,并隐藏窗体,并不显示它在任务栏中,它的工作。

+0

当鼠标悬停在图标上时,您确定显示图标的过程仍在运行吗? – 2010-09-24 15:42:28

回答

1

这意味着托盘图标已被删除。这通常发生在进程终止后,但托盘停留在那里 - 这是一个Windows错误。

因此,出于某种原因,您的托盘图标可能“崩溃”。

没有看到您的代码,将不可能进一步评论。

1

如果你正在创建图标对象,并让它超出范围而没有任何引用,那么下一个垃圾收集就会调用它的析构函数,这会发生。

3

将此代码粘贴到您的窗体类:

protected override void OnFormClosing(FormClosingEventArgs e) { 
     notifyIcon1.Visible = false; 
     base.OnFormClosing(e); 
    } 

这将确保该图标将不会在托盘缠绵消失。现在在该代码上设置一个断点并找出表单关闭的原因。如果你不知道原因,请将堆栈跟踪复制并粘贴到问题中。

0

当Windows资源管理器重新启动时,窗口将清除通知区域中的所有图标并发送广播消息任务栏创建。必须使用该消息再次添加通知图标。

您可以使用下面的代码来听事件:

UINT WM_TaskBarCreated = ::RegisterWindowMessage(L"TaskbarCreated"); 

和使用的WindowProc或了MessageHandler添加图标回到区域信息通报。