将界面最小化到系统托盘的完整步骤

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值