像QQ一样操作Winform程序

dotNet工控上位机 2021-09-15

objectwinform

424 字丨阅读本文需 2 分钟

-Begin-

前言

QQ和微信作为日常使用最广的CS客户端程序,可能我们以后习惯了这种操作:

点击最小化,将程序最小化到任务栏中

点击关闭,并不是真的关闭,而是缩小到托盘里

从托盘中找到图标,双击,将程序展示出来

从托盘中找到图标,右击,退出,才是真正的退出程序

今天跟大家分享一下,Winform程序实现最小化到托盘及托盘右键菜单。

实现

1、首先假设已经开发好了应用程序,从工具箱中,找到一个组件叫NotifyIcon,拖放到主窗体中。

2、点击NotifyIcon组件,右侧属性中,修改Icon和Text,改成你需要设置的内容。

3、主窗体添加一个FormClosing事件,在该事件中编写代码如下:

      private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
       {
           if (realClose == false)
           {
               this.WindowState = FormWindowState.Minimized;
               //隐藏任务栏区图标
               this.ShowInTaskbar = false;    
               e.Cancel = true;
           }
       }

realClose是一个全局字段,表示是否真的关闭,默认值是False,这样直接点击关闭时,并不是真的关闭程序,而且缩小到托盘。

4、给NotifyIcon组件添加一个双击事件,在双击事件中,将程序显示出来,代码如下:

      private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
       {
           if (WindowState == FormWindowState.Minimized)
           {
               //还原窗体显示    
              this. WindowState = FormWindowState.Normal;
               //激活窗体并给予它焦点
               this.Activate();
               //任务栏区显示图标
               this.ShowInTaskbar = true;
           }
       }

5、目前这种情况是无法关闭程序的,所以需要给NotifyIcon组件添加一个右键菜单,从工具箱中,添加一个ContextMenuStrip组件,然后添加两个Item,分别是打开软件tsm_Open和关闭软件tsm_Exit。

6、打开软件代码比较简单,具体如下:

      private void tsm_Open_Click(object sender, EventArgs e)
       {
           if (WindowState == FormWindowState.Minimized)
           {
               //还原窗体显示    
               this.WindowState = FormWindowState.Normal;
               //激活窗体并给予它焦点
               this.Activate();
           }
       }

7、退出软件首先是将realClose置位True,然后调用this.Close方法即可。

      private void tsm_Exit_Click(object sender, EventArgs e)
       {
           realClose = true;
           this.Close();
       }

至此,就实现了Winform程序实现最小化到托盘及托盘右键菜单。

免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处本网。非本网作品均来自其他媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如您发现有任何侵权内容,请依照下方联系方式进行沟通,我们将第一时间进行处理。

0赞 好资讯,需要你的鼓励
来自:dotNet工控上位机
0

参与评论

登录后参与讨论 0/1000