博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将界面最小化到系统托盘的完整步骤
阅读量:5982 次
发布时间:2019-06-20

本文共 1987 字,大约阅读时间需要 6 分钟。

1、界面上拖拽添加NotifyIcon控件 notifyIcon1

2、为此控件设置图标

3、添加主界面最小化事件

private bool notifyiconHasInitialzed=false;//此变量用于控制避免重复执行后面的初始化函数

private void MF_SizeChanged(object sender, EventArgs e)        

{

            if (this.WindowState == FormWindowState.Minimized) //判断是否最小化

            {

                notifyIcon1.Visible = true;

                this.Hide();

                this.ShowInTaskbar = false;

                if (!notifyiconHasInitialzed)

                    Initializenotifyicon();

            }

}

private void Initializenotifyicon()

        {

            //定义一个MenuItem数组,并把此数组同时赋值给ContextMenu对象

            MenuItem[] mnuItms = new MenuItem[3];

            mnuItms[0] = new MenuItem();

            mnuItms[0].Text = "显示窗口";

            mnuItms[0].Click += new System.EventHandler(this.notifyIcon1_showfrom); 

            mnuItms[1] = new MenuItem("-"); //在两个菜单项间显示横线 

            mnuItms[2] = new MenuItem();

            mnuItms[2].Text = "退出系统";

            mnuItms[2].Click += new System.EventHandler(this.ExitSelect);

            mnuItms[2].DefaultItem = true;

 

            //为托盘程序加入设定好的ContextMenu对象

            ContextMenu notifyiconMnu = new ContextMenu(mnuItms);

            notifyIcon1.ContextMenu = notifyiconMnu;

    

    //添加图标单击事件 

    //关键要点:一定要避嫌此初始化函数在每次Mizmied事件时都重复执行,原因是如果下面Click委托事件被重复执行几次,每次点击时就会Click事件就会触发几次。这是+=事件的规律。

            notifyIcon1.Click += new System.EventHandler(this.notifyIcon1_Click);

            notifyiconHasInitialzed = true;           

        }

//图标单击事件,后面的else if是为了实现能在显示和隐藏状态中直接切换,不用必须点击最小化按钮

private void notifyIcon1_Click(object sender, EventArgs e)

        {

            if (this.WindowState == FormWindowState.Minimized || !this.Visible)

            {

                this.Show();

                this.ShowInTaskbar = true;

                this.WindowState = FormWindowState.Normal;

                //notifyIcon1.Visible = false;

            }

            else if (this.WindowState==FormWindowState.Normal || this.Visible)

                this.Hide();

        }

 

//下两个事件是右键菜单中对应的事件

        public void notifyIcon1_showfrom(object sender, System.EventArgs e)

        {

            if (this.WindowState == FormWindowState.Minimized)

            {

                this.Show();

                this.ShowInTaskbar = true;

                this.WindowState = FormWindowState.Normal;

                notifyIcon1.Visible = false;

            }

        }

 

        public void ExitSelect(object sender, System.EventArgs e)

        {

            //隐藏托盘程序中的图标

            notifyIcon1.Visible = false;

            //关闭系统

            this.Close();

            this.Dispose(true);

        }

 

转载于:https://www.cnblogs.com/mol1995/p/6943667.html

你可能感兴趣的文章
Linux服务器的那些性能参数指标
查看>>
BZOJ 2302: [HAOI2011]Problem c [DP 组合计数]
查看>>
c++ 11开始语言本身和标准库支持并发编程
查看>>
.NET Core 之 MSBuild 介绍
查看>>
iOS:即时通讯之<了解篇 SocKet>
查看>>
《JavaScript高级程序设计》读书笔记(十):本地对象Date
查看>>
linux中fork()函数详解
查看>>
从1G到5G,46年屏幕变迁下,富士康、苹果、三星、华为的浴火重生路 ...
查看>>
用flash测试你的ircd
查看>>
白话红黑树系列之二——红黑树的构建
查看>>
客户的一张表中出现重复数据,而该列由唯一键约束,重复值如何产生的呢?...
查看>>
MySQL5.6中新增特性、不推荐使用的功能以及废弃的功能
查看>>
OnePlus安装Kali-NetHunter
查看>>
JavaScript:Array 对象
查看>>
PDFCreator:一款免费,开源的PDF(Tiff,pcx,png,jpeg,bmp,PS,EPS)打印机(VB,GPL),并提供了COM接口,方便使用各种编程语言调用...
查看>>
Note 1773479 - SYB: Displaying multiple triggers per object
查看>>
联手云计算核心技术开发,BoCloud与中科院软件所战略合作
查看>>
2017年背景下的SSD选购技巧有哪些变化?
查看>>
2016年的数据存储和管理的成本将何去何从?
查看>>
Airpods 并非无用,而是苹果借助语音交互布局物联网的新“棋子”
查看>>