如何在多个表单之间使用 1 个通知图标

本文关键字:通知 图标 表单 之间 | 更新日期: 2023-09-27 18:18:18

我有一个通知图标添加到我的项目主窗体中。我在项目中还有其他形式,我希望能够使用通知图标,尽管事实证明这很困难。在多个表单之间使用 1 个通知图标的最佳方法是什么?我读到一个关于不将其添加到表单而是将其实例化在自己的类中的线程,这对我来说毫无意义。思潮?

如何在多个表单之间使用 1 个通知图标

只需在主窗体上公开一个属性即可返回对 NotifyIcon 的引用。 您甚至可以将其设置为静态,因为只有一个:

public partial class MainForm : Form {
    public MainForm() {
        InitializeComponent();
        notifier = this.notifyIcon1;
        this.FormClosed += delegate { notifier = null; };
    }
    public static NotifyIcon Notifier { get { return notifier; } }
    private static NotifyIcon notifier;
}

其他类中的代码现在可以简单地使用 MainForm.Notifier。

在实现NotifyIcon的表单中创建一个公共静态变量:

public static NotifyIcon m_objNotifyIcon;

在表单加载中,分配表单NotifyIcon

m_objNotifyIcon = this.notifyIcon1;

全部设置好了。现在,您可以从项目中的任何位置访问通知图标

Forms.MainScreen.m_objNotifyIcon.ShowBalloonTip(2000, "Title", "Message", ToolTipIcon.Info);

即使需要将MainForm分配给NotifyIcon控件,也看不到在不同窗体之间共享其对象的任何问题。

比方说,为了更清楚:

1. MainForm启动并初始化NotifyIcon控件包装类,我们调用 NotifyControlHolder

2. NotifyControlHolder阶级像公共财产一样站在你的UIShared

3. UIShared单调类可以从应用程序的不同部分访问,这些部分可以访问它并更改它的状态,绕过MainForm