📜  winforms open multiple forms在taskabr中显示一个图标 - C#(1)

📅  最后修改于: 2023-12-03 15:05:58.026000             🧑  作者: Mango

Winforms open multiple forms在taskbar中显示一个图标 - C#

在开发 Winforms 程序时,有时需要同时打开多个窗口,但默认情况下每个窗口都会在任务栏中显示一个单独的图标,这可能会导致任务栏变得混乱。在本文中,我们将介绍如何在 Winforms 应用程序中设置一个图标来代表所有打开的窗口,并在单击该图标时显示所有已打开的窗口。

设置一个图标

为了在任务栏中显示一个图标,我们可以使用 NotifyIcon 类。该类提供了在任务栏中显示图标的功能,并允许我们设置双击图标时发生的事件。

要使用 NotifyIcon 类,请添加一个新的 NotifyIcon 控件到窗口中,并设置 Icon 属性为所需的图标。您可以在设计器中完成此操作,或者通过代码执行以下操作:

var notifyIcon = new NotifyIcon();
notifyIcon.Icon = new Icon("path/to/icon.ico");
显示所有已打开的窗口

为了在单击图标时显示所有已打开的窗口,我们需要跟踪所有打开的窗口的列表,并在 notifyIcon 的 MouseClick 事件中显示这些窗口。

首先,我们需要为所有打开的窗口创建一个列表。在您的程序中,您可能已经具有这样一个列表。如果没有,请在 Program 类中创建一个静态列表:

public static List<Form> OpenForms = new List<Form>();

接下来,我们需要在应用程序中的每个窗口中添加以下代码,以将其添加到 OpenForms 列表中:

public class MyForm : Form
{
    public MyForm()
    {
        Program.OpenForms.Add(this);
        ...
    }
}

最后,在 notifyIcon 的 MouseClick 事件中添加以下代码,以显示所有 OpenForms 中的窗口:

notifyIcon.MouseClick += (sender, args) =>
{
    if (args.Button == MouseButtons.Left)
    {
        foreach (var form in Program.OpenForms)
        {
            form.Show();
        }
    }
};

现在,当用户单击任务栏中的图标时,所有已打开的窗口都将显示在屏幕上。

总结

在本文中,我们介绍了如何使用 NotifyIcon 类在任务栏中显示一个图标,并在单击该图标时显示所有已打开的窗口。这可以使您的 Winforms 应用程序更加整洁和易于使用。