C#Winform将软件最小化至系统托盘

2021-02-16 20:19

阅读:479

最近做了一个关于软件最小化到托盘里的功能,对此做了一点小小的总结,关于如何将软件最小化托盘里,并且点击对应小图标会有许多可供选择的菜单,其实主要用的控件是就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 --加入快捷键
        /// 
        /// 设置Alt+S的显示/隐藏窗体全局热键
        /// 
        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)
            {
               
            }
        }

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

 

 


评论


亲,登录后才可以留言!