【问题标题】:C# clear tray icons of closed applicationsC#清除已关闭应用程序的托盘图标
【发布时间】:2017-10-16 05:01:50
【问题描述】:

我用System.Windows.Forms.NotifyIcon创建我的托盘图标

但是,应用程序关闭后。该图标会一直徘徊,直到我手动将鼠标悬停在它上面。

当新实例运行时,如何防止它徘徊或清除所有旧实例?

【问题讨论】:

  • 如果您在应用程序关闭时不释放 TrayIcon,就会发生这种情况。另一种情况是您的应用程序崩溃。但在这种情况下,所有其他使用托盘图标的应用程序也会发生这种情况,无论它们是用 C#、C++ 还是任何其他可以生成 Windows 应用程序的语言编写的。

标签: c# taskbar trayicon


【解决方案1】:

我没有重现您的问题,我在 Windows 10 Creators Update 上运行。

但是我发现当你关闭你的应用程序时你可以Dispose你的NotifyIconDispose 可以将您的图标从任务栏的托盘区域中移除。

我猜你可能已经意外退出了你的程序,这会导致你的问题。您应该检查是否调用了System.Exit()或其他不安全的退出方法。

你可以看下面的代码知道如何调用Dispose

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    protected override void OnClosed(EventArgs e)
    {
        base.OnClosed(e);
        // Call Dispose to remove the icon out of notification area of Taskbar.
        notifyIcon1.Dispose();
    }
}

【讨论】:

  • 调试时,当我单击停止按钮时,应用程序会终止而不调用任何回调。那是他们建立起来的时候。那有什么办法可以阻止呢?
  • Windows 不处理显示或隐藏的通知图标,甚至整个过程都退出了。 Windows API Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA lpdata) 是控制它的唯一方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2012-05-08
  • 2010-12-01
相关资源
最近更新 更多