VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > c#编程 >
  • C#实现右下角托盘程序,默认不显示窗体,关闭窗体时隐藏而不退出

Windows右下角托盘程序是Windows系统的一大特色。在某些场景非常适用。

因业务需要实现一个后台程序,需要开机自动启动,默认不显示窗体,点击系统右下角托盘图标时显示窗体,关闭窗体时隐藏而不退出程序,在托盘图标上点右键显示菜单,可以退出。

一、托盘图标的实现

 

 

C#中提供了notifyIcon组件实现托盘程序,将组件拖拽到窗体中,设置图标,设置点击事件。

二、窗体的隐藏与显示

隐藏窗口的方法有几种,下面介绍一种较为简单不绕弯的方法:

众所周知,Windows的窗口右上角有最小化、最大化、关闭三个按钮。如果将窗口最小化后,桌面上就没有窗体了,只会在任务栏显示,如果用代码将任务栏的显示也去掉那就真正隐藏了窗口了。

本例子就是使用此方式实现窗口隐藏的。

 

三、右键菜单

拖拽ContextMenuStrip组件到窗体,添加菜单项并设置事件,设置NotifyIcon组件的contextMenuStrip属性为右键菜单的name。

 

四、综合示例

复制代码
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;
using System.Reflection;
using System.IO;
using System.Windows.Forms.Design;

namespace U8FileTransfer
{
    public partial class Main : Form
    {
        public Main()
        {
            // 程序默认启动时隐藏窗体
            windowDisplay(false);

            InitializeComponent();
        }

        private void Main_Load(object sender, EventArgs e)
        {
        }

        /// <summary>
        /// 自定义方法:窗体的隐藏与显示
        /// </summary>
        /// <param name="display"></param>
        private void windowDisplay(bool display)
        {
            if (display)
            {
                this.WindowState = FormWindowState.Normal; // 窗口常规化
                this.ShowInTaskbar = true; // 显示在任务栏
            }
            else
            {
                this.WindowState = FormWindowState.Minimized; // 窗口最小化
                this.ShowInTaskbar = false; // 不显示在任务栏
            }

        }

        // 点击托盘图标显示出窗体
        private void notifyIcon_Click(object sender, EventArgs e)
        {
            // 需要将事件转换成鼠标事件
            MouseEventArgs mouseEvent = (MouseEventArgs)e;
            if (mouseEvent.Button == MouseButtons.Left) // 点击左键才弹出
            {
                windowDisplay(true);
            }
        }


        // 点击右上角X时仅隐藏窗体不退出
        private void Main_Closing(object sender, FormClosingEventArgs e)
        {
            windowDisplay(false);
            e.Cancel = true;
        }

        // 在托盘图标右键点菜单“显示界面”时显示窗体
        private void showWindowMenuItem_Click(object sender, EventArgs e)
        {
            windowDisplay(true);
        }

        // 在托盘图标右键点菜单“退出”时退出程序
        private void exitMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

    }
}
复制代码

 

参考文档:

https://blog.csdn.net/qq_25702235/article/details/128775998
https://www.5axxw.com/questions/simple/5btahv


出处:https://www.cnblogs.com/jsper/p/17205434.html


相关教程