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)
            {

            }
        }

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

 

原文地址:https://www.cnblogs.com/DreakSeeker/p/8398828.html

时间: 2024-10-27 13:57:59

C#Winform将软件最小化至系统托盘的相关文章

将Mozilla ThunderBird最小化到系统托盘(转载)

转自:http://be-evil.org/mozilla-thunderbird-minize-to-tray.html Mozilla ThunderBird是一款非常不错的邮件客户端,但是其在默认状态下不能最小化到系统任务栏中,这个设计让我十分不爽,不过Mozilla那强悍的插 件资源完全弥补这个问题,下面介绍一款插件可以实现将Mozilla ThunderBird最小化到系统托盘: MinimizeToTray Plus Versions 1.0.8 这款插件可以将ThunderBird

Delphi 7下最小化到系统托盘(主要是WM_TRAYMSG和WM_SYSCOMMAND消息)

在Delphi 7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本.定义如下: 123456789   _NOTIFYICONDATAA = record   cbSize: DWORD;   Wnd: HWND;   uID: UINT;   uFlags: UINT;   uCallbackMessage: UINT;   hIcon: HICON;   szTip: array [0..63] of Ansi

C# 实现WinForm窗口最小化到系统托盘代码,并且判断左右鼠标的事件

1.设置WinForm窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标. 3.添加窗体最小化事件(首先需要添加事件引用): this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged); //上面一行是主窗体InitializeComponent()方法中需要添加的引用 private void Form1_Siz

C#窗口实现最小化到系统托盘

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace notifyIconShow { public partial class ColdJoke : Form {

foobar2000设置关闭按钮最小化到系统托盘

1.设置托盘选项: 2.[File]->[Preferences]->[Advanced]->[Display]->[Default User Interface]->[Close minimises] 最后来一张经典皮肤感受下foobar2000的强大:

任意程序软件最小化到右下角

  对一个有洁癖的人来说,会经常折腾自己的电脑,最少让自己看起来舒服,今天心血来潮,觉得有时开的软件多了,把底部的工具栏都占满了(当然,果粉是没有这个烦恼的),就想把一些开启了但不经常要看的软件, 最小化的时候直接到右下角的角落里,免得占用任务栏 这次要运用的软件是Trayconizer 1, 下载 Trayconizer官网地址: http://www.whitsoftdev.com/trayconizer/下载地址: http://www.whitsoftdev.com/files/tray

AOPR软件最小化消失了

结合日常使用软件的经历,我们都是选择最小化按钮后,点击状态栏中最小化图标即可恢复软件窗口.在使用Advanced Office Password Recovery的过程中,有时会出现点击最小化按钮后在状态栏也找不到AOPR软件图标的情况,下文小编教你如何找回Office密码破解工具. AOPR软件去哪儿了? 当出现点击最小化按钮后在状态栏也找不到AOPR软件图标的情况时,用户不禁会问:Advanced Office Password Recovery去哪儿了?细心的用户能够在电脑右下角的系统托盘

WinForm 之 窗口最小化到托盘及右键图标显示菜单

Form最小化是指整个Form都缩小到任务栏上,但是窗体以Form的标题栏形式显示在任务栏上, 若是想让Form以Icon的形式显示在任务栏右下角,则需要给Form添加一个NotifyIcon控件. 一.添加NotifyIcon控件 1 如下图为窗体添加一个 NotifyIcon 控件,并指定 Icon 和 Text 属性,如下图: 2 在需要窗体最小化到托盘的处理代码中,添加如下代码: if(this.WindowState==FormWindowState.Normal&&this.V

CentOS最小化安装系统开启网卡

编辑配置文件: # vi /etc/sysconfig/network-scripts/ifcfg-eth0 将ONBOOT=no改成yes 退出保存 #:wq 重启网卡 #/etc/init.d/network restart vm虚拟机克隆,系统MAC和UUID会重复,导致获取不到IP 报错:device eth0 does not seem to be present, delaying initialization 需要修改文件 1. vi /etc/sysconfig/network-