WinForm实现最小化到系统托盘方法实例详解

下面我就详细讲解一下如何实现WinForm最小化到系统托盘。

什么是系统托盘?

系统托盘,又称通知区域(Notification Area),是Windows操作系统中任务栏右侧的一块区域,用于显示系统通知、状态图标等。

WinForm如何最小化到系统托盘?

WinForm的默认最小化行为是最小化到任务栏,但我们可以通过编程实现将WinForm最小化到系统托盘。具体步骤如下:

  1. 在WinForm窗口中添加NotifyIcon控件,用于在系统托盘中显示图标和鼠标提示信息。

csharp
// 声明NotifyIcon控件
private NotifyIcon notifyIcon;
// 初始化NotifyIcon控件
notifyIcon = new NotifyIcon();
notifyIcon.Icon = this.Icon; // 设置图标
notifyIcon.Text = "WinForm最小化到系统托盘"; // 设置鼠标提示信息
notifyIcon.Visible = true; // 显示NotifyIcon控件

  1. 注册窗口最小化事件,当窗口最小化时,将WinForm隐藏并显示NotifyIcon控件。

csharp
// 注册窗口最小化事件
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
this.Hide(); // 隐藏WinForm窗口
notifyIcon.ShowBalloonTip(1000); // 显示鼠标提示信息
}
}

  1. 注册NotifyIcon控件鼠标双击事件,当用户双击NotifyIcon控件时,将WinForm还原并显示。

csharp
// 注册NotifyIcon控件鼠标双击事件
private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Show(); // 显示WinForm窗口
this.WindowState = FormWindowState.Normal; // 还原窗口
}

示例说明

示例1

我们假设一个简单的WinForm应用程序,里面有一个按钮控件和一个文本框控件。当用户点击按钮后,文本框会显示一段提示信息。

现在我们要将这个应用程序最小化到系统托盘,当用户双击托盘图标时,将应用程序还原并显示。

实现方法如下:

  1. 在WinForm窗口中添加NotifyIcon控件。

csharp
// 声明NotifyIcon控件
private NotifyIcon notifyIcon;
// 初始化NotifyIcon控件
notifyIcon = new NotifyIcon();
notifyIcon.Icon = this.Icon; // 设置图标
notifyIcon.Text = "最小化到系统托盘"; // 设置鼠标提示信息
notifyIcon.Visible = true; // 显示NotifyIcon控件

  1. 注册窗口最小化事件,将WinForm隐藏并显示NotifyIcon控件。

csharp
// 注册窗口最小化事件
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
this.Hide(); // 隐藏WinForm窗口
notifyIcon.ShowBalloonTip(1000); // 显示鼠标提示信息
}
}

  1. 注册NotifyIcon控件鼠标双击事件,将应用程序还原并显示。

csharp
// 注册NotifyIcon控件鼠标双击事件
private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Show(); // 显示WinForm窗口
this.WindowState = FormWindowState.Normal; // 还原窗口
}

现在,当用户点击按钮后,文本框会显示提示信息。当用户将窗口最小化时,应用程序会隐藏,显示托盘图标。当用户双击托盘图标时,应用程序会还原并显示。

示例2

现在我们想要在应用程序最小化到系统托盘时,弹出一个菜单,包含一些操作项,例如退出应用程序、显示主窗口等。

实现方法如下:

  1. 在WinForm窗口中添加ContextMenu控件,用于在系统托盘中显示弹出菜单。

csharp
// 声明ContextMenu控件
private ContextMenu contextMenu;
// 初始化ContextMenu控件
contextMenu = new ContextMenu();
contextMenu.MenuItems.Add("退出应用程序", (s, e) => { Application.Exit(); }); // 添加退出应用程序操作项
contextMenu.MenuItems.Add("显示主窗口", (s, e) => { this.Show(); this.WindowState = FormWindowState.Normal; }); // 添加显示主窗口操作项

  1. 在NotifyIcon控件的鼠标右键事件中显示弹出菜单。

csharp
// 注册NotifyIcon控件鼠标右键事件
private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
contextMenu.Show(this, new Point(e.X, e.Y)); // 在鼠标位置处显示ContextMenu控件
}
}

现在,当用户将应用程序最小化到系统托盘时,可以通过右键单击托盘图标,弹出菜单,进行操作。例如,退出应用程序、显示主窗口等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:WinForm实现最小化到系统托盘方法实例详解 - Python技术站

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

相关文章

  • 如何判断 .NET Core 应用程序以管理员身份运行的

    如何判断 .NET Core 应用程序以管理员身份运行 在本攻略中,我们将深入讲解如何判断 .NET Core 应用程序以管理员身份运行,并提供两个示例说明。 判断 .NET Core 应用程序以管理员身份运行的方法 以下是判断 .NET Core 应用程序以管理员身份运行的方法: 使用WindowsIdentity.GetCurrent方法获取当前用户的W…

    C# 2023年5月17日
    00
  • 深入分析C#异步编程详解

    深入分析C#异步编程详解攻略 什么是异步编程 异步编程是一种在执行操作时不阻塞后续操作的编程模式。在异步编程中,当一个操作被提交时,它的控制被立即返回给调用者,而不需要等待操作的完成。当操作完成后,调用者可以通过回调或轮询的方式获取操作结果。在C#中,异步编程主要通过异步方法和任务的方式实现。 异步编程的优势 异步编程有以下优势: 提高程序的资源利用率 减少…

    C# 2023年6月3日
    00
  • C#引用类型转换的常见方式总结

    下面是关于C#引用类型转换的常见方式总结的攻略: 标题 C#引用类型转换的常见方式总结 简介 在C#中,我们经常需要进行引用类型的转换。本篇攻略将介绍引用类型转换的几种常见方式,并提供相应的示例,以便读者更好地理解和掌握。 显式类型转换 显式类型转换是指我们在代码中明确地将一个引用类型转换成另一个引用类型。常用的显式类型转换操作符为(type),其中type…

    C# 2023年5月15日
    00
  • 磊科路由器初始密码是多少?磊科路由器默认密码大全

    磊科路由器是一种常见的家用路由器,它提供了安全的网络连接和管理功能。在使用磊科路由器时,您需要知道初始密码或默认密码。本攻略将深入探讨磊科路由器初始密码和默认密码,并提供两个示例说明。 磊科路由器初始密码 磊科路由器的初始密码是指在第一次使用路由器时,您需要输入的密码。磊科路由器的初始密码通常是“admin”。如果您已经更改了密码,那么初始密码将不再有效。 …

    C# 2023年5月17日
    00
  • c#实现识别图片上的验证码数字

    C#是一种广泛使用的编程语言,可以用于开发各种类型的应用程序。本文将介绍如何使用C#实现识别图片上的验证码数字的完整攻略。 步骤一:获取验证码图片 首先,需要获取验证码图片。可以使用WebClient类从网站上下载验证码图片,也可以使用HttpWebRequest类从网站上获取验证码图片。以下是一个使用WebClient类下载验证码图片的示例: using …

    C# 2023年5月15日
    00
  • c#反射表达式树模糊搜索示例

    C#反射表达式树是一种非常强大的工具,它能够在运行时动态创建代码,可以在一些需要动态生成代码的场景中提供巨大的便利。其中,模糊搜索是一类比较常见的场景。下面,将详细讲解如何使用C#反射表达式树进行模糊搜索。 前置知识 在学习C#反射表达式树进行模糊搜索之前,需要掌握以下知识点: C#中的反射机制 C#中的表达式树 Linq表达式 示例一:使用表达式树进行模糊…

    C# 2023年6月1日
    00
  • c#网站WebConfig中域名引用示例介绍

    下面是“c#网站WebConfig中域名引用示例介绍”的完整攻略: 1. 简介 WebConfig是c#网站的配置文件,c#网站是一种基于.NET框架的网站开发语言。在WebConfig中,我们可以使用域名引用到其他网站或资源。 2. 域名引用的语法 在WebConfig中进行域名引用的语法格式如下: <configuration> <sy…

    C# 2023年5月31日
    00
  • 使用VS2019生成C#应用安装包的方法步骤

    下面是详细的攻略步骤。 使用VS2019生成C#应用安装包的方法步骤 1. 准备工作 在生成C#应用安装包前,我们需要先进行一些准备工作: 确认已经安装了Microsoft Visual Studio 2019。 确认已经创建了C#应用程序,并且应用能够正常地运行。 确认已经安装了Visual Studio Installer Projects扩展。如果还未…

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