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] 托盘主界面上的窗体是通过右键单击托盘弹出来的对话框。 还是一句话,经过敲上面的代码能够实现一个托盘的程序,但是上面的每一句代码你都懂吗?如果确认懂了自己写一写看看能否写出来,不是实现了,运行了就明白了。
C#基础温习(10):C#实现托盘功能
在我们做程序的时候很多程序都需要实现托盘功能,比如我们经常使用的qq等等,那我们如何自己实现托盘功能呢?本文实现了一个简单的托盘功能,直接上实例代码: