C#程序最小化到托盘图标操作步骤与实现代码

实现将C#程序最小化到托盘图标需要完成以下几个步骤:

  1. 绑定系统托盘控件:在窗体上添加一个ContextMenu控件,然后在程序启动的时候绑定到系统托盘控件上。
private NotifyIcon notifyIcon;
private void BindNotifyIcon()
{
    notifyIcon = new NotifyIcon();
    notifyIcon.BalloonTipText = "程序已最小化";
    notifyIcon.Text = "C#程序最小化到托盘图标";
    notifyIcon.Icon = new Icon("icon.ico");//设置托盘图标 
    notifyIcon.Visible = true;
    notifyIcon.DoubleClick += new EventHandler(NotifyIcon_DoubleClick);//双击托盘图标恢复窗体 
    this.WindowState = FormWindowState.Minimized;
    this.Hide();//使主窗体隐藏 
    notifyIcon.ShowBalloonTip(2000);
    notifyIcon.ContextMenu = new ContextMenu(new MenuItem[] { new MenuItem("退出程序", new EventHandler((o,e)=>{
        this.Close();
    }))});
}

//双击托盘图标恢复窗体 
private void NotifyIcon_DoubleClick(object sender, EventArgs e)
{
    this.Show();
    this.WindowState = FormWindowState.Normal;
}
  1. 处理窗体最小化事件:当用户最小化窗体时,使窗体隐藏,同时在系统托盘中显示托盘图标和消息,表示程序正在后台运行。
private void frmMainResize(object sender, EventArgs e)
{
    if (WindowState == FormWindowState.Minimized)
    {
        notifyIcon.Visible = true;
        this.Hide();
        notifyIcon.ShowBalloonTip(2000);
    }
}

protected override void OnResize(EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized) 
    {
        this.Hide();
        notifyIcon.Visible = true;
        notifyIcon.ShowBalloonTip(1000);
    }
    base.OnResize(e);
}
  1. 双击托盘图标进行还原:当用户双击托盘图标时,将程序还原至原来的状态。
private void NotifyIcon_DoubleClick(object sender, EventArgs e)
{
    this.Show();
    this.WindowState = FormWindowState.Normal;
}

示例一,将WinForm程序最小化到托盘图标:

  1. 创建一个WinForm应用程序,添加名为“frmMain”的窗体
  2. 在frmMain窗体的代码中添加上述代码实现上述三步
  3. 运行程序,在窗口最小化状态下,程序会继续在系统托盘中运行

示例二,WinForm程序最小化到托盘图标并在系统托盘中显示气泡提示:

  1. 在上述示例一的基础上,在BindNotifyIcon方法中的notifyIcon.ShowBalloonTip(2000);后添加notifyIcon.Visible = true;
  2. 在NotifyIcon_DoubleClick方法中,添加this.WindowState = FormWindowState.Normal;语句,代码如下:
private void NotifyIcon_DoubleClick(object sender, EventArgs e)
{
    this.Show();
    this.WindowState = FormWindowState.Normal;
    notifyIcon.Visible = false;
}
  1. 运行程序,在系统托盘中双击程序图标,窗口会恢复至正常状态,同时托盘提示会自动消失。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#程序最小化到托盘图标操作步骤与实现代码 - Python技术站

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

相关文章

  • 深入浅析C# 11 对 ref 和 struct 的改进

    深入浅析C# 11对ref和struct的改进 在C# 11中,对于ref和struct这两个关键词进行了一些改进和优化,本文将对这些改进进行详细的讲解。 对于ref的改进 在C# 11中,ref的作用被扩大到了包括字段、属性、方法参数和返回值等方面。 使用ref字段 我们可以使用ref来引用一个字段,并且可以对其进行修改,如下所示: public clas…

    C# 2023年5月15日
    00
  • ASP.Net Core基于EF6、Unitwork、Autofac实现Repository模式

    这是一篇关于在 ASP.Net Core 中应用 Repository 模式的攻略。我们将使用 Entity Framework 6,以及 UnitOfWork 模式和 Autofac 依赖注入框架来实现它。下面将是具体的步骤: 准备工作 在继续之前,我们需要确保在系统中安装了以下软件: Visual Studio 2017 及以上版本 .NET Core …

    C# 2023年6月3日
    00
  • c#入门之循环语句使用详解(for循环、do/while)

    C#入门之循环语句使用详解(for循环、do/while) 引言 在编写程序的过程中,经常需要对某些语句进行重复的执行,这时候就需要使用循环语句。本文将详细讲解C#中for循环和do/while循环的使用。 for循环 for循环是最基本的循环语句之一,在C#中也有完整的语法: for (initialization; condition; incremen…

    C# 2023年5月31日
    00
  • 大白话讲解C# 中的委托

    大白话讲解C# 中的委托 什么是委托? 在C#中,委托是一种类型,它可以封装一个或一组方法,供其他代码调用。简单来说,它就是函数指针的一种类型安全实现。 委托的定义和使用 可以使用 delegate 关键字定义委托,如下所示: public delegate void DelegateType(int param); 上面这段代码中,我们定义了一个名为 De…

    C# 2023年6月7日
    00
  • C# menuStrip控件实现鼠标滑过自动弹出功能

    让我来为你详细讲解“C# menuStrip控件实现鼠标滑过自动弹出功能”的完整攻略。 一、前置知识 在学习本攻略前,我们需要先掌握以下知识: C#语言的基础语法和控件的使用方法; menuStrip控件的基本使用方法; 鼠标事件相关的知识。 二、实现过程 首先,我们需要在窗体上添加menuStrip控件,并在其中添加菜单项。在代码中,我们可以通过以下方法来…

    C# 2023年6月3日
    00
  • SQL Server 2008 新特性 总结复习(一)

    SQL Server 2008 新特性 总结复习(一) SQL Server 2008 是微软公司开发的一款数据库管理系统软件,它具有很多新特性,本文将会对其中一些新特性进行详细讲解。 1. 影响行的Trigger 在 SQL Server 2008 中,Trigger 变得更加强大了,它可以使用 inserted 和 deleted 表来访问触发器所在表中…

    C# 2023年6月1日
    00
  • Asp.Net Core用NLog记录日志操作方法

    Asp.Net Core用NLog记录日志操作方法 在Asp.Net Core中,我们可以使用NLog来记录日志。本攻略将详细介绍如何使用NLog来记录日志,并提供两个示例说明。 准备工作 在使用NLog记录日志之前,我们需要完成以下准备工作: 安装NLog。 我们可以使用NuGet包管理器来安装NLog。在Visual Studio中,我们可以右键单击项目…

    C# 2023年5月16日
    00
  • C#判断字符串是否存在字母及字符串中字符的替换实例

    C#判断字符串是否存在字母及字符串中字符的替换实例 判断字符串是否存在字母 对于判断字符串中是否存在字母,可以使用正则表达式来实现。具体步骤如下: 引入正则表达式命名空间using System.Text.RegularExpressions; 使用正则表达式[a-zA-Z]匹配字符串中是否存在字母 判断匹配结果是否成功 下面是一个示例代码: using S…

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