gpt4 book ai didi

c# - Winforms 系统托盘中的多个通知图标

转载 作者:太空狗 更新时间:2023-10-29 21:58:06 26 4
gpt4 key购买 nike

可能我的问题与此重复 Multiple icons open in tray bar .在我的 winforms 应用程序中,一旦表单关闭,我就会在系统托盘中显示应用程序,即应用程序在关闭表单后不会退出,而是在应用程序系统托盘上的右键单击上下文菜单上单击“关闭”时退出。

但是当我继续使用该应用程序时,我注意到系统托盘中有更多的通知图标。但是,一旦我将鼠标悬停在它们上方,它们就会消失,除了正在运行应用程序的那一个。我已经尝试了各种方法来消除多个图标,但我做不到。

下面是我的代码用于最小化到系统托盘

public void MinimizeToTray()
{
try
{
this.WindowState = FormWindowState.Minimized;
TrayIcon.Visible = true;
TrayIcon.ShowBalloonTip(1000);
ShowInTaskbar = false;
//this.Activate();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

在表单加载时我添加了这段代码

private void LoadTrayMenu()
{
TrayMenu.Items.Add("Reminder");
TrayMenu.Items.Add("Close");
TrayMenu.Items[0].Click += new EventHandler(this.Reminder_Click);
TrayMenu.Items[1].Click += new System.EventHandler(this.Dispose_Click);
TrayIcon.ContextMenuStrip = TrayMenu;
}

dispose事件如下

private void Dispose_Click(object Sender, EventArgs e)
{
TrayIcon.Visible = false;
TrayIcon.Icon = null;
TrayIcon.Dispose();
this.Dispose();
}

鼠标点击图标我写了下面的代码

private void TrayIcon_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{

this.Show();
this.WindowState = FormWindowState.Normal;
TrayIcon.Visible = false;
//TrayIcon.Icon = null;
//TrayIcon.Dispose();
ShowInTaskbar = true;
}
}

我试过清除通知图标,但即使这样也无济于事。我错过了一些非常明显的东西吗?任何帮助将不胜感激。

最佳答案

在此方法中添加Application.Exit()

private void Dispose_Click(object Sender, EventArgs e)
{
TrayIcon.Visible = false;
TrayIcon.Icon = null;
TrayIcon.Dispose();
Application.Exit()
}

你不需要 this.Dispose 因为它会在 Application.Exit() 中被调用

在任务管理器中检查进程是否还在运行,是否结束,查看图标是否消失。

关于c# - Winforms 系统托盘中的多个通知图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com