话说今天搞一个程序,需要缩小到托盘的这个操作。于是就是用了NotifyIcon这个控件。
这个控件的主要作用就是 缩小到任务栏 操作。但是今天我不是讲 缩小到任务栏 的操作,而是讲的 在子控件里面如果去调用方法把任务栏的图标隐藏掉。
在开始的时候我很天真的以为这很简单啊:
(this.FindForm().Controls.Find("notifyIcon1", true)[0]).Visible = false;
这很简单嘛,这样操作就行了啊,结果报错了。根本就找不到这个控件。于是我查看了Form1的控件生成的 设计CS文件,发现,其实这个控件根本就没有加载到Form1里面去,所以是用这样的方法肯定是行不通的。
在纠结一阵以后,我决定换种思路区去实现这个功能。在Form1中,我们可以把设置隐藏的方式放到 Form1的方法里面去,例如:FormClosing。这个方法表示,在关闭窗体的时候触发这个事件。然后我们在 自定义控件里面就可以直接使用:
this.FindForm().Close();
System.Environment.Exit(0);
前一个起得作用,后面一个只是为了彻底关闭Winform程序。当我们在调用Form的关闭方法的时候,他触发在Form本身附加的 FormClosing 方法。
private void frmDemo_FormClosing(object sender, FormClosingEventArgs e)
{
this.notifyIcon1.Visible = false;
}
其实这个并不难想到,但是为了加深记忆,还是决定手写一次。方便下次查找。