C#怎样才能实现窗体最小化到托盘呢?

要实现C#窗体最小化到托盘,需要以下几步:

1.添加命名空间

需要添加System.Windows.Forms命名空间来使用NotifyIcon类。

using System.Windows.Forms;

2.创建NotifyIcon对象

在窗体类中定义一个NotifyIcon对象,用来实现窗体最小化后显示在系统托盘中。

private System.Windows.Forms.NotifyIcon notifyIcon1;

在窗体的构造函数中初始化NotifyIcon对象并添加鼠标事件处理方法。

public Form1()
{
    InitializeComponent();
    notifyIcon1 = new System.Windows.Forms.NotifyIcon();
    notifyIcon1.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info;
    notifyIcon1.BalloonTipText = "应用已最小化到托盘";
    notifyIcon1.BalloonTipTitle = "提示";
    notifyIcon1.Icon = this.Icon;
    notifyIcon1.Text = "应用名称";
    notifyIcon1.Visible = true;
    notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);
}

在鼠标双击事件处理方法中实现最小化到托盘的功能。首先将窗体隐藏,并显示系统托盘图标上的提示信息。然后设置图标左键单击事件的处理方法并将图标显示在系统托盘中。

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        this.Show();
        this.WindowState = FormWindowState.Normal;
    }
    else
    {
        this.WindowState = FormWindowState.Minimized;
        this.Hide();
        notifyIcon1.ShowBalloonTip(1000);
        notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
    }
}

3.设置窗体关闭事件

设置窗体关闭事件处理方法,实现在窗体关闭前隐藏到系统托盘中。在窗体关闭事件处理方法中需要将双击图标事件处理方法和左键单击图标事件处理方法从NotifyIcon对象的MouseDoubleClick和MouseClick事件中移除,否则在图标上单击会重复打开窗体。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    notifyIcon1.Visible = false;
    notifyIcon1.MouseDoubleClick -= new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);
    notifyIcon1.MouseClick -= new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
}

下面是完整的示例代码:

using System;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        private System.Windows.Forms.NotifyIcon notifyIcon1;

        public Form1()
        {
            InitializeComponent();
            notifyIcon1 = new System.Windows.Forms.NotifyIcon();
            notifyIcon1.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info;
            notifyIcon1.BalloonTipText = "应用已最小化到托盘";
            notifyIcon1.BalloonTipTitle = "提示";
            notifyIcon1.Icon = this.Icon;
            notifyIcon1.Text = "应用名称";
            notifyIcon1.Visible = true;
            notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            notifyIcon1.Visible = false;
            notifyIcon1.MouseDoubleClick -= new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);
            notifyIcon1.MouseClick -= new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
        }

        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.Show();
                this.WindowState = FormWindowState.Normal;
            }
            else
            {
                this.WindowState = FormWindowState.Minimized;
                this.Hide();
                notifyIcon1.ShowBalloonTip(1000);
                notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
            }
        }

        private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                this.Show();
                this.WindowState = FormWindowState.Normal;
                notifyIcon1.MouseClick -= new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
            }
        }
    }
}

示例1:

public Form1()
{
    InitializeComponent();
    notifyIcon1 = new System.Windows.Forms.NotifyIcon();
    notifyIcon1.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info;
    notifyIcon1.BalloonTipText = "应用已最小化到托盘";
    notifyIcon1.BalloonTipTitle = "提示";
    notifyIcon1.Icon = this.Icon;
    notifyIcon1.Text = "应用名称";
    notifyIcon1.Visible = true;
    notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);
}

在以上示例中,创建了NotifyIcon对象,设置了提示信息、图标以及鼠标双击事件处理方法。当双击图标时,在窗体最小化到托盘前会执行Show、WindowState和Hide方法,并显示提示信息。

示例2:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    notifyIcon1.Visible = false;
    notifyIcon1.MouseDoubleClick -= new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);
    notifyIcon1.MouseClick -= new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
}

在以上示例中,实现了窗体关闭前隐藏到托盘中的功能,在窗体关闭事件处理方法中移除了双击图标事件处理方法和左键单击图标事件处理方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#怎样才能实现窗体最小化到托盘呢? - Python技术站

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

相关文章

  • 深入理解C#之继承

    深入理解C#之继承 继承是面向对象编程中非常重要的一种机制,它可以使得我们代码重用性更高,更加简洁。在C#中,继承可以通过类之间的关系来实现(类之间的关系有继承、实现、组合等)。在本篇文章中,我们将学习C#中的继承机制,重点包括如下内容: 继承的语法和基本概念 虚方法和抽象类 接口继承 隐藏和重写方法 继承链 继承的语法和基本概念 在C#中,使用:符号表示一…

    C# 2023年5月15日
    00
  • C#连接到sql server2008数据库的实例代码

    下面是连接到SQL Server 2008数据库的C#代码实例。 示例1:使用SQLConnection连接数据库 添加引用:在Visual Studio中,选择“解决方案资源管理器”,右键单击“引用”文件夹,选择“添加引用”,在“添加引用”对话框中选择“System.Data.SqlClient”引用,点击“确定”按钮。 编写C#代码:代码实现步骤如下: …

    C# 2023年6月2日
    00
  • C#在Unity游戏开发中进行多线程编程的方法

    C#在Unity游戏开发中进行多线程编程的方法 在Unity游戏开发中,多线程编程可以提高游戏性能和可玩性,让游戏更加流畅。而在C#中,我们可以使用Thread类来进行多线程编程。 使用Thread类进行多线程编程 Thread类是.NET中用于创建和管理线程的类。在Unity游戏开发中,我们可以使用它来创建和管理多线程。 创建线程 创建线程有两种方式,一种…

    C# 2023年5月15日
    00
  • asp.net创建位图生成验证图片类(验证码类)

    下面是“ASP.NET创建位图生成验证图片类(验证码类)”的完整攻略: 什么是验证码 验证码是为了防止机器人恶意攻击而设置的一种机制。它一般是一张由数字或字母组成的随机图片,用户需要在文本框中输入正确的验证码,才能通过验证并继续执行后续的操作。所以,验证码一般被用于用户登录、注册、评论等操作中,以保障网站安全。 创建验证码类 1. 准备工作 准备一个名为“V…

    C# 2023年5月31日
    00
  • CentOS 7安装配置图文教程

    CentOS 7安装配置图文教程 本教程将详细介绍如何在虚拟机或物理机上安装并配置CentOS 7操作系统。我们将包括以下过程: 下载CentOS 7 ISO镜像文件并创建安装介质 安装CentOS 7 配置网络和基本系统设置 安装和配置常用软件 1. 下载CentOS 7 ISO镜像文件并创建安装介质 首先我们需要去CentOS官网上下载CentOS 7 …

    C# 2023年5月31日
    00
  • C++调用C#的DLL实现方法

    C++调用C#的DLL实现方法可以通过以下步骤来完成: 建立一个C#的DLL项目 首先,我们需要在Visual Studio中建立一个C#的类库项目。在项目中添加一个类,为这个类添加一个公共静态方法,然后编写相应的代码。比如,我们可以将下面的代码保存到Class1.cs文件中: public class Class1 { public static int …

    C# 2023年6月6日
    00
  • 详解Unity 实现语音识别功能

    详解Unity实现语音识别功能 1. 简介 本文将介绍如何使用Google Cloud Platform中的语音识别API实现Unity中的语音识别功能。语音识别是一项较为先进的技术,能够帮助我们更快捷地输入文字和指令,提高用户体验。Unity目前已经支持语音识别的插件,其中Google Cloud语音识别API是一种流行的实现方式。 2. 准备工作 在开始…

    C# 2023年5月15日
    00
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    要在ASP.NET 2.0中调试存储过程,我们可以采用如下步骤: 步骤一:创建数据库 在本地数据库中创建一个用于存储过程的测试数据库。可以使用Microsoft SQL Server Management Studio来创建该数据库。假设我们创建了一个名称为“TestDB”的数据库。 步骤二:创建存储过程 在创建存储过程之前,需要确保数据库连接已经设置好。可…

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