WinForm | C# 界面弹出消息通知栏 (仿Win10系统通知栏)
ApeForms 弹出消息通知栏功能
文章目录
- ApeForms 弹出消息通知栏功能
- 前言
- 全局API
- 通知栏起始方向
- 通知排列方向
- 通知栏之间的间隔距离
- 无鼠标悬停时的不透明度
- 消息通知窗体的默认大小
- 示例代码
- 文本消息提示栏
- 文本消息提示栏(带选项)
- 图文消息提示栏
- 图文消息提示栏(带选项)
- 图文消息提示栏(选项恢复窗口显示)
- UI库安装与使用
- 获取示例源码
前言
消息通知栏(Notification)
在桌面开发中有非常重要的作用,它是一种全局的、强制的交互方式。它可以在活动窗体之外的区域向用户发出醒目的消息提示,允许用户在指引下通过简易的操作完成交互。
ApeForms中提供的消息通知栏是在系统通知栏之外单独实现的一套通知功能,开发者可以自定义通知栏的内容、添加自定义的选项并设置动作回调、设置消失时间等。
全局API
通知栏起始方向
通知栏的起始方向默认是自下而上的(这是为了避免遮盖窗体关闭等按键),但也支持将其实方向改为自上而下的:
// 自上而下Notification.PrimeDirection = NotifyPrimeDirection.Top;// 自下而上Notification.PrimeDirection = NotifyPrimeDirection.Bottom;
通知排列方向
允许修改通知排列的方向(可理解为新消息通知的追加方式),分为栈模式
和队列模式
两种。
栈模式:新消息会弹出在起始位置,原有消息依次向后移动。
队列模式:新消息会弹出在已有消息的末尾。
// 队列模式Notification.Orientation = NotifyOrientation.Queue;// 栈模式Notification.Orientation = NotifyOrientation.Stack;
通知栏之间的间隔距离
允许开发者调整消息通知窗体之间的间距,方法如下:
// 消息通知窗体之间的间隔距离Notification.SpacingDistance = 10;
无鼠标悬停时的不透明度
允许设置消息通知窗体在无鼠标悬停时的不透明度(当鼠标移入通知栏区域后窗体会恢复100%不透明的高亮状态),设置代码如下:
// 修改无鼠标悬停时消息通知窗体的不透明度Notification.UnhoveringOpacity = 0.75f;
消息通知窗体的默认大小
当设置自定义的通知内容时窗体的尺寸可能需要根据内容进行调整,可以通过以下代码修改设置全局默认的通知栏尺寸:
// 修改消息通知窗体的默认大小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;// 添加自定义按钮1s.Options.Add(new NotificationOption("选项1", (obj, args) =>{Toast.Show("你选择了选项1");}));// 添加自定义按钮2s.Options.Add(new NotificationOption("选项2", (obj, args) =>{Toast.Show("你选择了选项2");}));});
图文消息提示栏
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属性,通知栏将不会被关闭。");}));});
图文消息提示栏(选项恢复窗口显示)
// 最小化窗体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;}));});
UI库安装与使用
请参考文章:《ApeForms | WinForm窗体UI美化库(Metro扁平风格)演示与安装》
获取示例源码
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
加入ApeForms QQ群答疑解惑:929371169
相关文章:
![](https://img-blog.csdnimg.cn/6df947fa2672441fbeffad7ab236209f.gif)
WinForm | C# 界面弹出消息通知栏 (仿Win10系统通知栏)
ApeForms 弹出消息通知栏功能 文章目录ApeForms 弹出消息通知栏功能前言全局API通知栏起始方向通知排列方向通知栏之间的间隔距离无鼠标悬停时的不透明度消息通知窗体的默认大小示例代码文本消息提示栏文本消息提示栏(带选项)图文消息提示栏图文消息提示…...
![](https://img-blog.csdnimg.cn/f74590063ca84b7a89f85ec2e275e732.png)
刷题之最长公共/上升子序列问题
目录 一、最长公共子序列问题(LCS) 1、题目 2、题目解读 编辑 3、代码 四、多写一题 五、应用 二、最长上升子序列问题(LIS) 1、题目 2、题目解读 3、代码 四、多写一道 Ⅰ、题目解读 Ⅱ、代码 一、最长公共子序列问题&…...
![](https://img-blog.csdnimg.cn/img_convert/964d5c594e4c6ccea737be3c6b6bed4e.gif#pic_center)
【数据结构】千字深入浅出讲解栈(附原码 | 超详解)
🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:C语言实现数据结构 💬总结:希望你看完…...
![](https://www.ngui.cc/images/no-images.jpg)
自动驾驶V2X
1 SoC MDM9250 2 设备网络节点 mhi_swip0 rmnet_mhi0 3 网络协议栈log打印控制 include/linux/netdevice.h ethtool -s eth0 msglvl [level] ethtool -s eth0 msglvl 0x6001 4 URLs MHI initial design review https://lore.kernel.org/lkml/001601d52148$bd852840$388f78c0$c…...
![](https://img-blog.csdnimg.cn/cc9765dc19e34393bfec40e2103d80b9.png)
零基础自学网络安全/渗透测试有哪些常见误区?
一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…...
![](https://img-blog.csdnimg.cn/b65225faa2174bf9ba5c6eede6aebe83.png)
ConvMixer:Patches Are All You Need
Patches Are All You Need 发表时间:[Submitted on 24 Jan 2022]; 发表期刊/会议:Computer Vision and Pattern Recognition; 论文地址:https://arxiv.org/abs/2201.09792; 代码地址:https:…...
![](https://www.ngui.cc/images/no-images.jpg)
day10—编程题
文章目录1.第一题1.1题目1.2思路1.3解题2.第二题2.1题目2.2涉及的相关知识2.3思路2.4解题1.第一题 1.1题目 描述: 给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩…...
![](https://img-blog.csdnimg.cn/img_convert/b90dd3f653a84ea9abc3a3dabb17472b.png)
如何测量锂电池的电量
锂电池在放电时我们有时需要知道电池的实时电量,如电池电量低了我们就需要及时给锂电池充电,避免电池过度放电。我手里的这个就是个单节锂电池电量显示模块,只需要将这个模块接到锂电池的正负极即可显示电量。这个模块的电量分为四档…...
![](https://img-blog.csdnimg.cn/d197a9056faf464bb35a2053d486dac2.jpeg)
菜鸟刷题Day6
⭐作者:别动我的饭 ⭐专栏:菜鸟刷题 ⭐标语:悟已往之不谏,知来者之可追 一.链表内指定区间反转:链表内指定区间反转_牛客题霸_牛客网 (nowcoder.com) 描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转…...
![](https://img-blog.csdnimg.cn/img_convert/a4b8b0c8431edd1ca6bf6d2a43322cdd.png)
DecimalFormat格式化显示数字
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字,可以实现以最快的速度将数字格式化为你需要的样子。 DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充, # 表示只要有可能就…...
![](https://img-blog.csdnimg.cn/4444158668fe4692995c9e9d1e018737.jpg)
cpu中缓存简介
一级缓存是什么: 一级缓存都内置在CPU内部并与CPU同速运行,可以有效的提高CPU的运行效率。一级缓存越大,CPU的运行效率越高,但受到CPU内部结构的限制,一级缓存的容量都很小。 CPU缓存(Cache Memory…...
![](https://img-blog.csdnimg.cn/cdfcb24ec75f4129bd8fd2f001e35671.jpeg)
【数据结构】二叉树的遍历以及基本操作
目录 1.树形结构 1.概念 2.二叉树 2.1概念 2.2 两种特殊的二叉树 2.3二叉树的存储 2.4二叉树的基本操作 1.手动快速创建一棵简单的二叉树 2.二叉树的遍历 (递归) 3.二叉树的层序遍历 4.获取树中节点的个数 5.获取叶子节点的个数 6.获取第K层节点的个数 7.获取二叉…...
![](https://img-blog.csdnimg.cn/e8f844b2d9a2421cb92f599cf275d26b.png)
若依框架 --- ruoyi 表格的设置
表格 字典值转换 (1) 方式1:使用字典枚举的方式 var isDownload [[${dict.getType(YES_OR_NO)}]];{field : isDownload,title : 是否允许下载,formatter: function(value, row, index) {return $.table.selectDictLabel(isDownload, value);} }, (2) 方式2&…...
![](https://img-blog.csdnimg.cn/img_convert/553c75535df5c4a333e0319079a1c103.jpeg)
“两会”网络安全相关建议提案回顾
作为新一年的政治、经济、社会等发展的“风向标”,今年“两会”在3月13日顺利闭幕。在今年“两会”期间,多位人大代表也纷纷围绕网络安全、数据安全的未来发展做了提案和建议。 01 “两会”网络安全相关建议和提案回顾 建议统筹智能网联汽车数据收集与共…...
![](https://img-blog.csdnimg.cn/a091abb93a584912801511b923925156.jpeg)
一篇文章带你真正了解接口测试(附视频教程+面试真题)
目录 一、什么是接口测试? 二、为什么要做接口测试? 三、如何开展接口测试? 四、接口测试常见面试题 一、什么是接口测试? 所谓接口,是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据…...
![](https://img-blog.csdnimg.cn/485e23fe171340ac8aa6484295c452bf.png)
C/C++每日一练(20230325)
目录 1. 搜索插入位置 🌟 2. 结合两个字符串 🌟 3. 同构字符串 🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 搜索插入位置 给定一个排序数…...
![](https://img-blog.csdnimg.cn/img_convert/27bc94269ed741bf9628da0efdcf8c32.png)
Linux操作系统ARM指令集与汇编语言程序设计
一、实验目的1.了解并掌握ARM汇编指令集2.应用ARM指令集编写一个程序操控开发板上的LED灯二、实验要求应用ARM汇编指令集编写程序,实现正常状态下开发板上的LED灯不亮,按下一个按键之后开发板上的LED灯进入流水灯模式。三、实验原理四个LED灯的电路如下图…...
![](https://img-blog.csdnimg.cn/img_convert/0903649b9c6614de9ecdbcd6d9164036.png)
计网之HTTP协议和Fiddler的使用
文章目录一. HTTP概述和fidder的使用1. 什么是HTTP2. 抓包工具fidder的使用2.1 注意事项2.2 fidder的使用二. HTTP协议格式1. HTTP请求格式1.1 基本格式1.2 认识URL1.3 方法2. 请求报头关键字段3. HTTP响应格式3.1 基本格式3.2 状态码一. HTTP概述和fidder的使用 1. 什么是HTT…...
![](https://img-blog.csdnimg.cn/a67aa28c34254d6a8bbb1319b228b1e3.png)
sql性能优化:MS-SQL(SQL Server)跟踪日志信息结果列字段说明,MSSQL的列字段说明(column)
sql性能优化:MS-SQL(SQL Server)跟踪日志信息结果列字段说明,MSSQL的列字段说明(column) 参考: SQL:BatchCompleted 事件类 | Microsoft Learn SQL 跟踪 | Microsoft Learn sp_trace_setevent (…...
![](https://www.ngui.cc/images/no-images.jpg)
DNS主从复制
#前提准备:关闭SElinux 关闭防火墙 时间同步 #环境说明:Centos7 #ip地址:dns-master:10.0.0.100 dns-slave:10.0.0.103 web:10.0.0.101 主DNS服务配置 1.安装软件包: yum install bind -…...
![](https://www.ngui.cc/images/no-images.jpg)
常见的js加密/js解密方法
常见的js加密/js解密方法 当今互联网世界中,数据安全是至关重要的。为了保护用户的隐私和保密信息,开发人员必须采取适当的安全措施。在前端开发中,加密和解密技术是一种常见的数据安全措施,其中 JavaScript 是最常用的语言之一。…...
![](https://www.ngui.cc/images/no-images.jpg)
6 python函数
函数 在实现某个功能对应的代码的时候,如果将实现功能对应的函数放到函数中,那么下一次再需要这个功能的时候,就可以不用再写这个功能对应的代码,直接调用这个功能对应的函数。 1.什么是函数 函数就是实现某一特点功能的代码的封装…...
![](https://img-blog.csdnimg.cn/c04bb29a3a8e4685a69ad7b0d5911325.png)
7.避免不必要的渲染
目录 1 组件更新机制 2 虚拟DOM配合Diff算法 3 减轻state 4 shouldComponentUpdate() 4.1 基本使用 4.2 使用参数 5 纯组件 5.1 基本使用 5.2 纯组件的比较方法 shallow compere 1 组件更新机制 当父组件重新渲染时,父组件的所有子组件也会重新…...
![](https://img-blog.csdnimg.cn/7f8395b2777f446ab6159e479a147b49.jpeg)
国产化大趋势下学习linux的必要性
由于国际上的一些国家的制裁和威胁。最近几年国产化大趋势慢慢的兴起,我们国产化硬件的需求越来越大。对国产操作系统的需求也越来越多,那么我们一直用的Windows系统为什么不用了呢?众所周知的原因,不管是最新的Windows11还是正值…...
![](https://www.ngui.cc/images/no-images.jpg)
浅谈虚树
问题引入 你是否遇到过下面这种问题: SDOI2011 消耗战 在一场战争中,战场由 nnn 个岛屿和 n−1n-1n−1 个桥梁组成,保证每两个岛屿间有且仅有一条路径可达。现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已…...
![](https://www.ngui.cc/images/no-images.jpg)
裸机条件下写一个基于时间片轮转的多任务并发程序
目录前言A. 使用RTOSB.裸机多任务并发前言 在学习各种MCU的时候,都是用在main函数里写一个while(1){/* 执行代码 */},这种方式只能一个函数运行完以后再运行另一个函数。 假设需求控制多个模块,如显示屏幕信息的同时控制电机,还要…...
![](https://www.ngui.cc/images/no-images.jpg)
RK3588 系统定制开关机动画
平台:ITX-3588J, ROC-RK3588S-PC 系统:Android12.0 作者:jpchen & zzz 一. 功能描述 定制自己的开机动画和关机动画 二. 功能实现 1.开启功能 修改device/rockchip/common/BoardConfig.mk文件 BOOT_SHUTDOWN_ANIMATION_RINGINGtrue2.…...
![](https://www.ngui.cc/images/no-images.jpg)
水文-编程命令快查手册
前言 脑子里面记不住一些命令,每次遇到都得查下。我经常在三个实体电脑,windows/uos/ubuntu不同系统上编程。 所以web版本的笔记查看起来方便点。这里报错下。 二级标题 cmake windows在cmake --build的时候,使用–config,指定…...
![](https://img-blog.csdnimg.cn/b6a0ec8ee9b949e3b94be9b8cfe7bd60.png)
如何优雅编写测试用例
当你学会了如何设计测试用例之后,接下来便是开始用例的编写。 在设计阶段,更准确的说应该是识别测试点的过程,而编写阶段则是将测试点细化成一条条测试用例的过程,有了比较全的用例场景后,如何让别人更舒服、更方便、…...
![](https://img-blog.csdnimg.cn/a328d24baf92460e87dd84a46bd9ccfb.png#pic_center)
[入门必看]数据结构2.3:线性表的链式表示
[入门必看]数据结构2.3:线性表的链式表示第二章 线性表2.3 线性表的链式表示知识总览2.3.1 单链表的定义2.3.2_1 单链表的插入删除2.3.2_2 单链表的查找2.3.2_3 单链表的建立2.3.3 双链表2.3.4 循环链表2.3.5 静态链表2.3.6 顺序表和链表的比较2.3.1 单链表的定义单…...
酒店网站做的比较好的/关键词排名优化易下拉技巧
2010年12月14日- 添加了带有指向“ 简介和结论”第2部分的链接的边栏。 此外,在添加条目2部分相关主题 。 常用缩略语 API:应用程序接口 HTML:超文本标记语言 HTTP:超文本传输协议 URL:统一资源定位符 XML&a…...
![](/images/no-images.jpg)
公司做网站花销会计分录/网络营销的主要手段
思路 因为给定的树是BST,所以可以知道如果采用后续遍历的方式,第一个找到的节点应该是最大的节点。所以采用递归的方式从最大的节点开始改变树的值 code var sum intfunc convertBST(root *TreeNode) *TreeNode {sum 0helper(root)return root }func…...
![](https://img-blog.csdnimg.cn/dbca417e5d574390bf66277eb8aa4350.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZSQIOaYig==,size_20,color_FFFFFF,t_70,g_se,x_16)
上海心橙科技网站建设/网页模板免费下载网站
java内存结构 java虚拟机在执行java程序的时候会把它所管理的内存划分为若干个不同的数据区,这些区域各有用途 程序计数器 介绍:它是程序控制流的指示器,分支,循环,跳转,异常处理,线程恢复等…...
![](https://img2018.cnblogs.com/blog/1538953/201903/1538953-20190319212951242-913349226.png)
学会建设网站必要性/it行业培训机构哪个好
Description 传送门 Solution 先将原树转化成点分树: 然后维护三个堆: \(c[i]\) 保存点分树中子树 \(i\) 中的黑色节点到 \(fa[i]\) 的距离;\(b[i]\) 保存点分树中 \(i\) 的每个儿子的 \(c[i]\) 的最大值;\(a\) 保存点分治的每个根…...
![](https://img-blog.csdnimg.cn/img_convert/028279a70e3ead2b952c79c27f015794.png)
便利的网站建设公司/网店买卖有哪些平台
展开全部一、“一点都不好”的英文是:Not at all.二、all的音标62616964757a686964616fe4b893e5b19e31333431346337:英 [ɔ:l] 美 [ɔl]三、all释义:1、adj.全部的;一切的;各种的;极度的,尽量的She devotes all her love to her…...
山东德州网站建设哪家最专业/站长统计在线观看
APP的首页App.js里,根据logFlag的值来判断渲染的内容是登录页面还是首页: http://blog.csdn.net/black_dreamer/article/details/51902362 以前的逻辑是在MyInfo.js文件里的注销按钮里设置isLogin为false,然后跳转到App.js,App.…...