ApeForms | C# WinForm 界面弹出消息通知栏 (仿Win10系统通知栏)

简介: 消息通知栏(Notification)在桌面开发中有非常重要的作用,它是一种全局的、强制的交互方式。它可以在活动窗体之外的区域向用户发出醒目的消息提示,允许用户在指引下通过简易的操作完成交互。ApeForms中提供的消息通知栏是在系统通知栏之外单独实现的一套通知功能,开发者可以自定义通知栏的内容、添加自定义的选项并设置动作回调、设置消失时间等。

ApeForms 弹出消息通知栏功能

前言

消息通知栏(Notification)在桌面开发中有非常重要的作用,它是一种全局的、强制的交互方式。它可以在活动窗体之外的区域向用户发出醒目的消息提示,允许用户在指引下通过简易的操作完成交互。

ec922f210ce646c195066c540ff5c184[1].gif

ApeForms中提供的消息通知栏是在系统通知栏之外单独实现的一套通知功能,开发者可以自定义通知栏的内容、添加自定义的选项并设置动作回调、设置消失时间等。


全局API

通知栏起始方向

通知栏的起始方向默认是自下而上的(这是为了避免遮盖窗体关闭等按键),但也支持将其实方向改为自上而下的:

                // 自上而下
                Notification.PrimeDirection = NotifyPrimeDirection.Top;

                // 自下而上
                Notification.PrimeDirection = NotifyPrimeDirection.Bottom;

d5c7fb93af054ed0b78cbf5944b0b2e8[1].gif

通知排列方向

允许修改通知排列的方向(可理解为新消息通知的追加方式),分为栈模式队列模式两种。
栈模式:新消息会弹出在起始位置,原有消息依次向后移动。
队列模式:新消息会弹出在已有消息的末尾。

                // 队列模式
                Notification.Orientation = NotifyOrientation.Queue;

                // 栈模式
                Notification.Orientation = NotifyOrientation.Stack;

f3c79a66639b438b8de9497840d57526[1].gif

通知栏之间的间隔距离

允许开发者调整消息通知窗体之间的间距,方法如下:

            // 消息通知窗体之间的间隔距离
            Notification.SpacingDistance = 10;

无鼠标悬停时的不透明度

允许设置消息通知窗体在无鼠标悬停时的不透明度(当鼠标移入通知栏区域后窗体会恢复100%不透明的高亮状态),设置代码如下:

            // 修改无鼠标悬停时消息通知窗体的不透明度
            Notification.UnhoveringOpacity = 0.75f;

13fab7249835440e9861cfce7117aad2[1].gif

消息通知窗体的默认大小

当设置自定义的通知内容时窗体的尺寸可能需要根据内容进行调整,可以通过以下代码修改设置全局默认的通知栏尺寸:

            // 修改消息通知窗体的默认大小
            Notification.DefaultFormsSize = new Size(350, 150);

示例代码

文本消息提示栏

            Notification.Builder.ShowTextNotification(s =>
            {
   
   
                // 标题
                s.Title = "My Notification";
                // 消息内容
                s.Message = "这是一个纯文本类型的消息通知栏,你可以在此处设置任何文本";
                // 通知栏停留时长(毫秒)
                s.RetentionTime = 10000;
                //提示色
                s.ReminderColor = Color.LightSkyBlue;
            });

文本消息提示栏(带选项)

            Notification.Builder.ShowTextNotification(s =>
            {
   
   
                // 标题
                s.Title = "My Notification";
                // 消息内容
                s.Message = "这是一个纯文本类型的消息通知栏,你可以在此处设置任何文本。通知栏允许添加自定义选项(可配置选项的单击事件)。";
                // 通知栏停留时长(毫秒)
                s.RetentionTime = 10000;
                //提示色
                s.ReminderColor = Color.LightSkyBlue;
                // 添加自定义按钮1
                s.Options.Add(new NotificationOption("选项1", (obj, args) =>
                {
   
   
                    Toast.Show("你选择了选项1");
                }));
                // 添加自定义按钮2
                s.Options.Add(new NotificationOption("选项2", (obj, args) =>
                {
   
   
                    Toast.Show("你选择了选项2");
                }));
            });

gif

图文消息提示栏

            Notification.Builder.ShowImageTextNotification(s =>
            {
   
   
                // 标题
                s.Title = "My Notification";
                // 消息内容
                s.Message = "这是一个图片+文本类型的消息通知栏,你可以自定义显示图片和显示文本。";
                // 设置图像
                s.Image = Resources.Magnet_12;
                // 设置图像定位方式
                s.ImageSizeMode = PictureBoxSizeMode.StretchImage;
                // 通知栏停留时长(毫秒)
                s.RetentionTime = 10000;
                //提示色
                s.ReminderColor = Color.LightSkyBlue;
            });

图文消息提示栏(带选项)

            Notification.Builder.ShowImageTextNotification(s =>
            {
   
   
                // 标题
                s.Title = "My Notification";
                // 消息内容
                s.Message = "这是一个图片+文本类型的消息通知栏,你可以自定义显示图片和显示文本。通知栏允许添加自定义选项(可配置选项的单击事件)。";
                // 设置图像
                s.Image = Resources.Magnet_12;
                // 设置图像定位方式
                s.ImageSizeMode = PictureBoxSizeMode.StretchImage;
                // 通知栏停留时长(毫秒)
                s.RetentionTime = 10000;
                // 提示色
                s.ReminderColor = Color.LightSkyBlue;
                // 添加自定义按钮
                s.Options.Add(new NotificationOption("单击后关闭", (obj, args) =>
                {
   
   
                    Toast.Show("默认状态下,单击任意选项后都会关闭通知栏");
                }));
                s.Options.Add(new NotificationOption("单击后不关闭", (obj, args) =>
                {
   
   
                    args.IsDisappear = false;
                    Toast.Show("修改事件参数的IsDisappear属性,通知栏将不会被关闭。");
                }));
            });

34f670548a8c496f9e598e6a29509f4c.gif

图文消息提示栏(选项恢复窗口显示)

            // 最小化窗体
            this.FindForm().WindowState = FormWindowState.Minimized;

            Notification.Builder.ShowImageTextNotification(s =>
            {
   
   
                s.Title = "ApeForms";
                s.Message = "Demo窗体已被最小化到开始栏,可通过下方按键还原窗体。";
                s.Image = Resources.ImageButton_1;
                s.RetentionTime = 10000;
                s.ReminderColor = Color.Red;;
                s.Options.Add(new NotificationOption("显示窗口", (obj, args) =>
                {
   
   
                    // 恢复窗体显示
                    this.FindForm().WindowState = FormWindowState.Normal;
                }));
            });

8529510baed046a6ad2991cbe45b4061.gif


UI库安装与使用

请参考文章:《ApeForms | WinForm窗体UI美化库(Metro扁平风格)演示与安装》
6df947fa2672441fbeffad7ab236209f.gif


获取示例源码

ApeForms UI库源码地址:https://github.com/ApeFree/ApeFree.ApeForms
ApeForms Demo源码地址:https://github.com/ApeFree/ApeFree.ApeForms.Demo
下载体验Demo.exe网盘链接:https://landriesnidis.lanzouy.com/b011mr7rg 密码:26fx

相关文章
|
5月前
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
592 27
|
8月前
|
SQL 数据库 数据安全/隐私保护
C#wpf学习卡后台管理系统
C#wpf学习卡后台管理系统
224 32
|
7月前
|
存储 监控 算法
基于 C# 的局域网计算机监控系统文件变更实时监测算法设计与实现研究
本文介绍了一种基于C#语言的局域网文件变更监控算法,通过事件驱动与批处理机制结合,实现高效、低负载的文件系统实时监控。核心内容涵盖监控机制选择(如事件触发机制)、数据结构设计(如监控文件列表、事件队列)及批处理优化策略。文章详细解析了C#实现的核心代码,并提出性能优化与可靠性保障措施,包括批量处理、事件过滤和异步处理等技术。最后,探讨了该算法在企业数据安全监控、文件同步备份等场景的应用潜力,以及未来向智能化扩展的方向,如文件内容分析、智能告警机制和分布式监控架构。
208 3
|
8月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
320 0
|
12月前
|
Linux C# iOS开发
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
323 12
|
12月前
|
存储 监控 算法
企业内网监控系统中基于哈希表的 C# 算法解析
在企业内网监控系统中,哈希表作为一种高效的数据结构,能够快速处理大量网络连接和用户操作记录,确保网络安全与效率。通过C#代码示例展示了如何使用哈希表存储和管理用户的登录时间、访问IP及操作行为等信息,实现快速的查找、插入和删除操作。哈希表的应用显著提升了系统的实时性和准确性,尽管存在哈希冲突等问题,但通过合理设计哈希函数和冲突解决策略,可以确保系统稳定运行,为企业提供有力的安全保障。
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
326 2
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
758 1
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
1161 0