📅  最后修改于: 2023-12-03 15:05:58.026000             🧑  作者: Mango
在开发 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 应用程序更加整洁和易于使用。