zoukankan      html  css  js  c++  java
  • C#基础温习(10):C#实现托盘功能

    在我们做程序的时候很多程序都需要实现托盘功能,比如我们经常使用的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] 托盘主界面上的窗体是通过右键单击托盘弹出来的对话框。 还是一句话,经过敲上面的代码能够实现一个托盘的程序,但是上面的每一句代码你都懂吗?如果确认懂了自己写一写看看能否写出来,不是实现了,运行了就明白了。  
  • 相关阅读:
    Qt之JSON生成与解析
    Qt的QLineEdit显示密码
    Ubuntu14.04 64位运行32位程序
    Xcode 7在支持ipad的设备中需要支持分屏!
    「模板」平衡树
    [NOI2016]区间 题解(决策单调性+线段树优化)
    [NOIP模拟测试12]题解
    [笔记乱写]0/1分数规划
    [NOIP模拟测试11] 题解
    [SCOI2014]方伯伯的玉米田 题解(树状数组优化dp)
  • 原文地址:https://www.cnblogs.com/vsdot/p/3263369.html
Copyright © 2011-2022 走看看