在我们做程序的时候很多程序都需要实现托盘功能,比如我们经常使用的qq等等,那我们如何自己实现托盘功能呢?本文实现了一个简单的托盘功能,直接上实例代码:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Threading;
using System.Windows.Forms;namespace Tuopan
{class Program{static void Main(string[] args){InitNotifyIcon();new Form().ShowDialog();}/// <summary>/// 声明通知静态实体/// </summary>public static readonly NotifyIcon NotifyIcon = new NotifyIcon();/// <summary>/// 初始化通知栏图标。/// </summary>private static void InitNotifyIcon(){List<string> menuItems = new List<string>{MenuItems.CONFIG_MENU,MenuItems.MONITOR_MENU,MenuItems.INIT_MENU,MenuItems.EXIT_MENU};ContextMenu notifyIconContextMenu = new ContextMenu();//生成菜单项并添加事件foreach (MenuItem menuItem in menuItems.Select(item => new MenuItem(item))){menuItem.Click += MenuItem_Click;notifyIconContextMenu.MenuItems.Add(menuItem);}NotifyIcon.Text = "托盘demo程序";NotifyIcon.BalloonTipShown += NotifyIcon_BalloonTipShown;NotifyIcon.Icon = new Icon("3.ico");NotifyIcon.BalloonTipIcon = ToolTipIcon.Info;NotifyIcon.BalloonTipText = "服务运行中……";NotifyIcon.BalloonTipTitle = "托盘demo程序";NotifyIcon.Visible = true;NotifyIcon.ShowBalloonTip(2000);NotifyIcon.ContextMenu = notifyIconContextMenu;}private static void NotifyIcon_BalloonTipShown(object sender, EventArgs e){NotifyIcon.Text = "托盘demo程序";}/// <summary>/// 通知栏图标的菜单功能方法。/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private static void MenuItem_Click(object sender, EventArgs e){MenuItem menuItem = sender as MenuItem;if (menuItem == null) return;switch (menuItem.Text){case MenuItems.CONFIG_MENU:menuItem.Checked = true;FormShow("配置界面显示");menuItem.Checked = false;break;case MenuItems.INIT_MENU:menuItem.Checked = true;FormShow("初始化界面显示");menuItem.Checked = false;break;case MenuItems.MONITOR_MENU:menuItem.Checked = true;FormShow("监控界面显示");menuItem.Checked = false;break;case MenuItems.EXIT_MENU:Exit();break;}}private static void FormShow(string text){Form myform=new Form();myform.Text = text;myform.ShowDialog();}/// <summary>/// 退出程序/// </summary>private static void Exit(){if (NotifyIcon != null){NotifyIcon.Visible = false;NotifyIcon.Dispose();}Thread.Sleep(500);Environment.Exit(0);}}/// <summary>/// 常量类/// </summary>public static class MenuItems{#region 通告图标菜单项public const string CONFIG_MENU = "配置界面";public const string MONITOR_MENU = "监控界面";public const string INIT_MENU = "初始化界面";public const string EXIT_MENU = "退出程序";#endregion 通告图标菜单项}
}

运行结果: [caption id="attachment_873" align="alignnone" width="225"] 我的托盘[/caption] [caption id="attachment_874" align="alignnone" width="681"] 主界面[/caption] 托盘主界面上的窗体是通过右键单击托盘弹出来的对话框。 还是一句话,经过敲上面的代码能够实现一个托盘的程序,但是上面的每一句代码你都懂吗?如果确认懂了自己写一写看看能否写出来,不是实现了,运行了就明白了。

转载于:https://www.cnblogs.com/vsdot/archive/2013/05/08/3263369.html

C#基础温习(10):C#实现托盘功能相关推荐

  1. 计算机绘图图层基本线性,计算机绘图基础-第10章 尺寸标注.ppt

    计算机绘图基础-第10章 尺寸标注 第10章 尺 寸 标 注 10.1 尺寸标注基础 10.1.1 尺寸标注的规则 10.1.2 尺寸的组成 10.1.3 尺寸标注的基本类型 AutoCAD提供了四种 ...

  2. Windows 10 Version 2004 新功能盘点

    Windows 10 Version 2004 新功能盘点 Windows 10 Version 2004功能更新即将登场,但目前仍没有敲定具体的名称.目前微软已经发布了ISO镜像,意味着微软有望近期 ...

  3. C#系统托盘功能实现

    C#系统托盘功能实现 功能 知识点 notifyicon控件 ContexMenuStrip控件 SizeChanged windowState DialogResult类 Application类 ...

  4. 短信系统后台基础版本搭建服务器环境和功能说明

    短信系统基础版本数据库搭建和后台功能介绍 短信系统后台基础版本搭建服务器环境和功能 此版本为短信系统基础版本 一:服务器环境篇 1.1:服务器操作系统 使用windows2016 或者是windows ...

  5. 为指定的职工在原工资的基础上长10%的工资,并打印涨工资前和涨工资后的工资

    /* 为指定的职工在原工资的基础上长10%的工资,并打印涨工资前和涨工资后的工资 select sal into psal from emp where empno=? update emp set ...

  6. 电子商务基础课件(10.25更新)

    电子商务基础课件(10.25更新) 电子商务基础课件 unit01-01-1.rar unit01-01-2.rar unit03-01.rar unit04-01.rar unit05-01.rar ...

  7. C# 10 的五大新功能

    作者 | Matthew MacDonald 译者 | 弯月     责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 以下为译文: C# 的 GitHub 页面上记载了一长串诱人的想 ...

  8. 1177: 按要求排序(指针专题)_L2算法基础第10课 排序中

    L2-算法基础-第10课 排序中 排序 归并排序 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Divide and Conquer)的一个非常典型的应用 ...

  9. 抢先看! Lumion 10 正式发布之核心功能预览

    昨晚, Lumion 10发布了! 小编带大家一同预览 Lumion 10 正式发布之核心功能 没有什么比案例来的更为直观 这个不到3分钟的新功能视频预览 足以呈现全新Lumion10.0带来的精彩 ...

  10. ArcGIS二次开发基础教程(10):三维分析

    ArcGIS二次开发基础教程(10):三维分析 坡度分析 请务必学会使用帮助文档!!! //DEM数据的坡度分析 将分析结果添加到地图上 //首先获取DEM数据,方法有很多例如从个人地理数据库获取,也 ...

最新文章

  1. HDU 1273 漫步森林
  2. 【NLP】深度学习文本分类|模型代码技巧
  3. linux mysql date 格式_关于MySQL中的三种日期类型
  4. 面试必会系列 - 5.1 网络BIO、NIO、epoll,同步/异步模型、阻塞/非阻塞模型,你能分清吗?
  5. web.config配置数据库连接
  6. Compound Words UVA - 10391(c++用法中substr函数用法+map实现)
  7. mysql_根据身份证号识别性别、年龄、所在省份
  8. tensorflow框架
  9. 保存tensorboard的损失曲线为图片
  10. Python+tkinter+sqlite3模拟通信录管理系统
  11. Autorelease Pool
  12. A NEW THREE-STAGE CURRICULUM LEARNING APPROACH TO DEEP NETWORK BASED LIVER TUMOR SEGMENTATION
  13. 阿里图标库(iconfont)下载图标使用图标技巧(保姆级图文)
  14. 借用计算机简谱,电脑编辑打印简谱之路怎么走——“电脑简谱助手”操作系列谈之二...
  15. PHP获取中国所有的大学,全国300所大学的BBS论坛.doc
  16. HTML5 canvas 中的 fillstyle fillrect strokeStyle strokeRect fill stroke rect 的简单理解
  17. 让华为小米抱团 统一推送联盟究竟是何方神圣?
  18. Matplotlib:设置坐标轴范围,刻度,位置,自定义刻度名称,添加数据标签
  19. Ubuntu12.10 使用JLink连接开发板用arm-gdb调试ARM程序
  20. node.js常用模块

热门文章

  1. JAVA程序员面试32问(价值8k)你认同吗?
  2. 在React项目中,如何优雅的优化长列表
  3. mysqlbinlog结合sed命令恢复update时未加where条件之前的数据
  4. Lecture 6 Order Statistics
  5. 「LibreOJ#516」DP 一般看规律
  6. 进程管理之工作管理详解(job control)
  7. OVM-V1.2正式发布,新增实时监控功能,支持一键升级
  8. Eucalyptus-NC管理
  9. Web应用程序的目录结构
  10. 全体注意:@live.com 形势不妙,可能三周内被收回