今天是: 2024-12-04    美好的一天,从现在开始

技巧网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问移动社区

搜索
热搜: PLC 视觉 活动
查看: 1776|回复: 0

[C#编程] Winform程序实现最小化到托盘及托盘右键菜单

[复制链接]

  离线 

TA的专栏

累计签到:296 天
连续签到:1 天

75

主题

5

回帖

336万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3361114
发表于 2022-11-29 20:15:39 | 显示全部楼层 |阅读模式

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


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

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

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

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


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


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


Winform程序实现最小化到托盘及托盘右键菜单

Winform程序实现最小化到托盘及托盘右键菜单


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


Winform程序实现最小化到托盘及托盘右键菜单

Winform程序实现最小化到托盘及托盘右键菜单


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

[C#] 纯文本查看 复制代码
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组件添加一个双击事件,在双击事件中,将程序显示出来,代码如下:

[C#] 纯文本查看 复制代码
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。


Winform程序实现最小化到托盘及托盘右键菜单

Winform程序实现最小化到托盘及托盘右键菜单


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

[C#] 纯文本查看 复制代码
private void tsm_Open_Click(object sender, EventArgs e)
{
  if (WindowState == FormWindowState.Minimized)
  {
      //还原窗体显示    
      this.WindowState = FormWindowState.Normal;
      //激活窗体并给予它焦点
      this.Activate();
  }
}

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

[C#] 纯文本查看 复制代码
private void tsm_Exit_Click(object sender, EventArgs e)
{
   realClose = true;
   this.Close();
}

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

 
QQ在线咨询
售前咨询热线
暂无
售后咨询热线
暂无
快速回复 返回顶部 返回列表