我计划使用此方法显示通知图标,以便可以在主表单和子表单(从另一个SO post找到)之间访问它
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;
}
编辑:为了澄清 - 我可以确认使用没有上述代理的代码,当我关闭表格时系统托盘图标确实消失了,我也确实使用VS UI从工具箱拖放NotifyIcon所以设计师是处理我的初始化,我正在使用上面的构造函数来访问它。
答案 0 :(得分:1)
如果通知图标在逻辑上与表单的这个实例相关联,那么您不应该将它作为静态字段。将其标记为静态是为了明确地说它不绑定到一个实例,而是在所有实例之间共享。
我认为当形式的一切都被摧毁并释放出来时?
如果它是实例数据,那么因为它是静态的,因此不与实例绑定,所以当表单消失时它将不会被清除。
当然,如果这是主要形式(而不是用词不当)那么整个应用程序将在表单关闭时结束,这将清除所有内容,无论是否静态。
答案 1 :(得分:0)
您需要设置
nutifier.Visible = false;
notifier = null;
关闭。如果没有,图标会在应用程序关闭后停留