zoukankan      html  css  js  c++  java
  • C#Winform将软件最小化至系统托盘

    最近做了一个关于软件最小化到托盘里的功能,对此做了一点小小的总结,关于如何将软件最小化托盘里,并且点击对应小图标会有许多可供选择的菜单,其实主要用的控件是就NotifyIcon控件与contextMenuStrip控件的结合使用,利用contextMenuStrip控件添加对应的菜单以及菜单对应的功能。

    第一步:首先介绍一下NotifyIcon控件的属性:

    BalloonTipIcon —— 气泡提示的类型,有None(无)、Info(蓝色感叹号)、Warnning(黄色感叹号)、Error(小红叉)

    比如:此图从别处借用

    BalloonTipText —— 气泡提示的内容,如上图的None等气泡类型信息;

    BalloonTipTitle —— 气泡提示的标题,如上图的Tip;

    ContextMenuStrip —— 绑定的右键菜单;

    Icon —— 所显示的图标;

    Text —— 鼠标移上去时,显示的提示信息;

    Visible —— 是否显示图标,当然,不显示就看不到了。

    第二步:介绍如何使用NotifyIcon控件

    首先添加一个click事件

      private void notifyIcon1_Click(object sender, EventArgs e)
            {
                //EventArgs继承自MouseEventArgs,所以可以强转
                MouseEventArgs Mouse_e = (MouseEventArgs)e;
                //点鼠标右键,return
                if (Mouse_e.Button == MouseButtons.Left)
                {
                    ShowForm();
                }
            }
    
    
      private void ShowForm()
            {
                try
                {
                    if (CommonClass.OpenFormName == "LoginForm")
                    {
                        this.Show();
                        this.WindowState = FormWindowState.Normal;
                       
                    }
                    else if (CommonClass.OpenFormName == "MainForm")
                    {
                        foreach (Form frm in Application.OpenForms)
                        {
                            if (frm.Name == "MainForm")
                            {
                                frm.Show();
                                frm.WindowState = FormWindowState.Normal;
                            }
                        }
                    }
                    else
                    {
                        foreach (Form frm in Application.OpenForms)
                        {
                            if (frm.Name == "StepNewRegisterForm")
                            {
                                frm.Show();
                                frm.WindowState = FormWindowState.Normal;
                                frm.Activate();
                            }
                        }
                    }
                    this.notifyIcon1.Visible = false;// 隐藏程序小图标
                }
                catch (Exception ex)
                {
                    //XtraMessageBox.Show(ex.Message, "提示信息", MessageBoxButtons.OK);
                }
                
            }
    

      

    第三步:

    在使用NotifyIcon控件时,经常需要用到快捷菜单(ContextMenu控件)。添加快捷菜单,如下图:

    1.添加右键菜单

    2.将右键菜单和小图标绑定

    3.如何为菜单项添加点击事件,步骤如下:

    单击事件具体处理逻辑:

      private void ShowForm()
            {
                try
                {
                    if (CommonClass.OpenFormName == "LoginForm")
                    {
                        this.Show();
                        this.WindowState = FormWindowState.Normal;
                    }
                    else if (CommonClass.OpenFormName == "MainForm")
                    {
                        foreach (Form frm in Application.OpenForms)
                        {
                            if (frm.Name == "MainForm")
                            {
                                frm.Show();
                                frm.WindowState = FormWindowState.Normal;
                            }
                        }
                    }
                    else
                    {
                        foreach (Form frm in Application.OpenForms)
                        {
                            if (frm.Name == "StepNewRegisterForm")
                            {
                                frm.Show();
                                frm.WindowState = FormWindowState.Normal;
                                frm.Activate();
                            }
                        }
                    }
                    this.notifyIcon1.Visible = false;// 隐藏程序小图标
                }
                catch (Exception ex)
                {
                   
                }
                
            }
    

    第四步:如何在软件最小化时添加自定义提示内容:  

       public  void HideForm()
            {
                try
                {
                   //显示小图标
                    this.notifyIcon1.Visible = true;
                   //隐藏窗体
                    this.hide();
                   //取消在任务栏中显示
                    this.ShowInTaskbar = false;
                  //最小化到托盘的显示内容
                    notifyIcon1.ShowBalloonTip(3000, "程序最小化提示",
                        "图标已经缩小到托盘,打开窗口请双击图标即可。也可以使用Alt+S键来显示/隐藏窗体。",
                        ToolTipIcon.Info);
                }
                catch (Exception ex)
                {
                   
                }
                
            }
    

     第五步:在步骤四中提到了一点快捷键的东西,由于所知不多,恐表达有误,就直接贴代码吧,留给自己积累一下,此处我借助了一个老项目封装的dll

      private RegisterHotKeyHelper hotKey2 = new RegisterHotKeyHelper();
      #region --加入快捷键
            /// <summary>
            /// 设置Alt+S的显示/隐藏窗体全局热键
            /// </summary>
            private void SetHotKey()
            {
                try
                {
                    hotKey2.Keys = Keys.S;//可任意设置你想用的字母键
                    hotKey2.ModKey = RegisterHotKeyHelper.MODKEY.MOD_ALT;
                    hotKey2.WindowHandle = this.Handle;
                    hotKey2.WParam = 10003;
                    hotKey2.HotKey += new RegisterHotKeyHelper.HotKeyPass(hotKey2_HotKey);
                    hotKey2.StarHotKey();
                }
                catch (Exception ex)
                {
                   
                }
            }
    

      以上内容仅作为学习积累,希望也能帮助到大家。

     

  • 相关阅读:
    不上大学遗撼,上过大学后悔
    消息队列(MSMQ)实现多服务器应用程序之间消息实时交互
    抓取网页源代码
    用asp.net显示在线登陆人数及位置
    原版对XML文档的读写
    C#.NET实现经典排序算法
    深入剖析C#继承机制
    ASP.NET长文章分页
    人民币小写金额转化成大写金额
    GridView和DataFormatString
  • 原文地址:https://www.cnblogs.com/DreakSeeker/p/8398828.html
Copyright © 2011-2022 走看看