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

让我为您详细讲解一下“C# WinForm窗口最小化到系统托盘”的完整攻略。

基本思路

将窗口最小化到系统托盘需要用到以下两个类:

  • NotifyIcon: 系统托盘图标类,用于在系统托盘中显示图标。
  • ContextMenuStrip: 右键菜单类,用于为系统托盘图标添加右键菜单。

基本的思路是,在窗口最小化时,将窗口隐藏并在系统托盘中显示一个图标,当用户单击该图标时,再将窗口显示出来。

示例1:最小化时将窗口隐藏并在系统托盘中显示图标

private NotifyIcon notifyIcon;  // 声明一个NotifyIcon对象

private void MainForm_Resize(object sender, EventArgs e)
{
    if (WindowState == FormWindowState.Minimized)
    {
        // 隐藏窗口
        Hide();

        // 在系统托盘中显示一个图标
        notifyIcon = new NotifyIcon();
        notifyIcon.Icon = Properties.Resources.tray_icon;
        notifyIcon.Text = "My App";
        notifyIcon.ContextMenuStrip = contextMenuStrip;
        notifyIcon.Visible = true;
    }
}

在窗口最小化时,先隐藏窗口,然后创建一个NotifyIcon对象,在其中设置图标、提示文本和右键菜单,并将可见性设置为true,这样图标就会显示在系统托盘中。

示例2:单击系统托盘图标时将窗口显示出来

private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        // 显示窗口
        Show();
        WindowState = FormWindowState.Normal;

        // 隐藏系统托盘中的图标
        notifyIcon.Visible = false;
    }
}

在NotifyIcon的MouseClick事件中,当用户单击左键时,将窗口显示出来,并将WindowState设置为Normal,这样窗口就会被恢复到原来的大小和位置。然后隐藏掉系统托盘中的图标。

总结

综上所述,要将C# WinForm窗口最小化到系统托盘,需要在窗口最小化时,使用NotifyIcon类在系统托盘中显示一个图标,并在该图标的MouseClick事件中将窗口显示出来。当然,在显示窗口之前,还需要将图标从系统托盘中隐藏掉。

以上是关于C# WinForm窗口最小化到系统托盘的完整攻略及两个示例。希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# WinForm窗口最小化到系统托盘 - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • asp中用insert into语句向数据库插入记录(添加信息)的方法

    以下是详细讲解“asp中用insert into语句向数据库插入记录(添加信息)的方法”的完整攻略: 1. 连接数据库 在使用insert into语句插入记录之前,我们需要首先连接到数据库,使用ADODB.Connection对象可以实现数据库连接。连接数据库的代码如下: <% ‘Recordset对象用于存储和处理从数据库中检索出来的数据 Dim …

    C# 2023年5月31日
    00
  • 详解ASP.NET Core 之 Identity 入门(二)

    下面是“详解ASP.NET Core 之 Identity 入门(二)”的完整攻略: 什么是ASP.NET Core Identity ASP.NET Core Identity是一个用于管理用户、角色和权限的框架。它提供了一组API和UI组件,可以轻松地将身份验证和授权功能集成到ASP.NET Core应用程序中。 如何使用ASP.NET Core Ide…

    C# 2023年5月16日
    00
  • C# String.LastIndexOf()方法: 查找指定的子字符串在字符串中最后出现的位置

    String.LastIndexOf() 是 C# 中 string 类的一个方法,它用于在字符串中查找指定子字符串(或字符)最后一次出现的位置,并返回其索引。该方法返回的索引值是字符串的起始位置为 0 的位置开始计算的。如果字符串中不存在该子字符串或字符,则返回 -1。 该方法的语法如下: public int LastIndexOf(string val…

    C# 2023年4月19日
    00
  • C#中多态现象和多态的实现方法

    下面来详细讲解一下”C#中多态现象和多态的实现方法”的攻略。 什么是多态? 多态,英文名为Polymorphism,是指在面向对象编程中,同一种行为表现出不同的形态和用途,也是一种很强大的面向对象编程特性。 在实际应用中,多态通常指的是一个变量(或参数、返回值等)能够具有多种类型,且能够根据不同的类型而呈现出多种不同的行为的能力,这种能力通常是通过继承、重载…

    C# 2023年6月7日
    00
  • C#使用System.Buffer以字节数组Byte[]操作基元类型数据

    操作基元类型数据时,我们通常需要进行数据类型转换,进行字节序列转换。而C#中的System.Buffer类提供了方便的功能,可以以字节数组Byte[]的形式对基本类型进行操作。以下是C#使用System.Buffer以字节数组Byte[]操作基元类型数据的完整攻略: 1. 引入命名空间 为了使用System.Buffer类,必须在代码中引入该命名空间。在代码…

    C# 2023年6月8日
    00
  • C# 泛型深入理解介绍

    C#泛型深入理解介绍 在C#语言中,泛型是一种强大的编程工具,可以提高代码的可重用性、可维护性和可读性。本文将对C#泛型进行深入的介绍,包括泛型的概念、语法、使用场景和示例等。 泛型的概念 泛型是指一种能够在编译时期处理多种数据类型的编程技术。通过泛型,我们可以编写出能够处理任意数据类型的代码,提高代码的可重用性。 泛型的语法 在C#中,我们可以使用泛型类、…

    C# 2023年5月15日
    00
  • ASP.NET中后台注册js脚本使用的方法对比

    当我们需要在ASP.NET后台页面中注册JavaScript脚本时,有两种常见的方法可以实现。它们分别是使用ScriptManager和ClientScriptManager。 1. 使用ScriptManager ScriptManager是ASP.NET中的一个控件,可以用来管理客户端脚本。当我们需要在ASP.NET页面中嵌入JavaScript文件或脚…

    C# 2023年5月31日
    00
  • c#图片上传和显示的实现方法

    C# 图片上传和显示是 Web 开发中的常见需求。本文将介绍 C# 图片上传和显示的实现方法。 图片上传 图片上传需要使用 HTML 的 form 表单和服务器端的代码处理。以下是实现图片上传的基本步骤: HTML Form 表单中添加 <input type=”file” name=”image”>,用于选择要上传的图片文件。 在服务器端,使用…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部