首页 > 编程语言 >C#实现右下角托盘程序,默认不显示窗体,关闭窗体时隐藏而不退出

C#实现右下角托盘程序,默认不显示窗体,关闭窗体时隐藏而不退出

时间:2023-03-11 10:45:30浏览次数:50  
标签:右下角 C# void System 托盘 窗体 using 隐藏

Windows右下角托盘程序是Windows系统的一大特色。在某些场景非常适用。C#中提供了notifyIcon组件实现托盘程序。因业务需要实现一个假后台程序,开机自动启动且默认不显示窗体,点击图片图标时弹出窗体,关闭时隐藏而不退出,点右键可以退出。

 

托盘组件的应用

参考:

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

 

隐藏与显示窗体

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

本例子就是使用此方式实现窗口隐藏的。当然隐藏窗口的方法有种,这种是较为简单不绕弯的一种。

 

右键菜单

拖拽ContextMenuStrip组件到窗体实现右键菜单

 

代码:

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();
        }

    }
}

 

标签:右下角,C#,void,System,托盘,窗体,using,隐藏
From: https://www.cnblogs.com/jsper/p/17205434.html

相关文章

  • token解决cookie的弊端
    token解决cookie的弊端目录token解决cookie的弊端cookie的弊端token解决弊端一什么是token和JWTJWT的构成token工作流程token解决弊端二CSRF攻击token防止CSRFcookie的弊......
  • 使用Go语言创建WebSocket服务器和客户端
    WebSocket是一种新型的网络通信协议,可以在Web应用程序中实现双向通信。在这篇文章中,我们将介绍如何使用Go语言编写一个简单的WebSocket服务器。首先,我们需要使用G......
  • C. Errich-Tac-Toe 构造
    C1.Errich-Tac-Toe(EasyVersion)(构造)https://codeforces.com/contest/1450/problem/C1题意:给定n*n矩阵,最初全为空,在其中可以放置X和O,若相同的连成一行或一列则获胜,每......
  • vue中执行异步函数async和await的用法
    在开发中,可能会遇到两个或多个函数异步执行的情况,对于Vue中函数的异步函数执行做了一个小总结,如下:异步执行使用async和await完成created(){this.init()},meth......
  • LeetCode|2457. 美丽整数的最小增量
    题目链接:2457.美丽整数的最小增量给你两个正整数n和target。如果某个整数每一位上的数字相加小于或等于target,则认为这个整数是一个美丽整数。找出并返回满......
  • Docker安装
    背景最近接手了几个项目,发现项目的部署基本上都是基于Docker的,幸亏在几年前已经熟悉的Docker的基本使用,没有抓瞎。这两年随着云原生的发展,Docker在云原生中的作用使得它也......
  • JavaScript表单
          ......
  • can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the t
     如何解决这个问题:TypeError:can'tconvertcuda:0devicetypetensortonumpy.UseTensor.cpu()tocopythetensortohostmemoryfirst.这个错误通常出现在试......
  • Photoshop 2023 (ps 2023) for Mac v24.0激活版
    Photoshop 2023是一款图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑工作。ps有很多功能,在图像、图形、文字......
  • LightGCL: Simple Yet Effective Graph Contrastive Learning for Recommendation
    目录概符号说明基本流程模型的基本流程另一个View优化代码CaiX.,HuangC.,XiaL.andRenX.LightGCL:Simpleyeteffectivegraphcontrastivelearningforreco......