C# Winform消息通知系统托盘气泡提示框ToolTip控件
作者:代码迷途 发布时间:2023-01-13 23:31:02
气球状提示框的介绍和系统通知变化
NotifyIcon控件表示系统右下角任务栏上的托盘图标,其ShowBalloonTip
方法用于显示任务栏中一定时间的具有指定标题、消息内容和图标的气球状提示框(气泡提示框)。
也可以通过NotifyIcon属性BalloonTipIcon
、BalloonTipText
、BalloonTipText
指定相关内容。
单独介绍它的变化,是因为在Win7及之前的系统中,该方法显示提示为气球状的提示框,基本效果如下:
但是在Win10,气球状的提示框已经该系统本地的toast通知效果取代,也就是,使用NotifyIcon的ShowBalloonTip
方法,将会显示系统本地通知,具体效果如下:
并且notifyIcon.ShowBalloonTip(timeout)
第一个参数timeout,从Windows Vista开始,此参数已经无效,通知的显示时间基于系统的辅助功能设置,所以一般设置为0即可。
消息通知的提示
新建项目NotificationTrayToolTip
,添加两个按钮,一个显示,一个关闭,以及一个名为notifyIcon
的NotifyIcon控件(初始可见性设置为false:notifyIcon.Visible = false;
)。
设计器中为notifyIcon
的Icon属性指定一个图标文件。
ShowBalloonTip()方法及指定消息类型
显示气泡提示按钮的点击事件中,设置notifyIcon
可见,并执行ShowBalloonTip()
方法,其第二个参数为标题,第三个参数为消息内容,最后一个为消息类型。
private void buttonPro1_Click(object sender, EventArgs e)
{
notifyIcon.Visible = true;
// timoeout参数已经无效,通知的显示时间基于系统的辅助功能设置
notifyIcon.ShowBalloonTip(0, "消息标题-Error", "这是一个错误类型的消息内容", ToolTipIcon.Error);
}
系统toast通知显示内容对应notifyIcon控件的属性或参数:
关闭消息提示按钮的点击事件代码中,设置Visible = false
关闭系统提示:
private void buttonPro2_Click(object sender, EventArgs e)
{
notifyIcon.Visible = false;
//notifyIcon.Visible = true;
}
notifyIcon.Visible = false
会清空所有相关的系统操作中心里面的消息通知。
NotifyIcon属性设置消息
通过属性也可以指定消息内容、标题、类型等:
notifyIcon.BalloonTipIcon = ToolTipIcon.Warning;
notifyIcon.BalloonTipText = "测试";
notifyIcon.BalloonTipTitle = "标题";
notifyIcon.ShowBalloonTip(0);
BalloonTipIcon不同的消息类型
ToolTipIcon消息类型图标的取值有四种,和方法中的对应:
ToolTipIcon.Info
ToolTipIcon.Warning
ToolTipIcon.Error
ToolTipIcon.None
ToolTipText属性
Winform中许多控件都提供有ToolTipText
属性,用于设置提示消息,用于在鼠标位于控件上方(悬停)时,显示提示语。
通常都是容器控件的子控件项有这个属性,用于提示不同的子项信息。
一般在设置子项控件的ToolTipText
后,要想使提示生效,还需要设置父容器控件的ShowItemToolTips
为true(DataGridView
为ShowCellToolTips
属性)。
如下,ToolStrip、MenuStrip1、ListView、DataGridView、TabControl等几种控件启用tip提示,并为子项设置不同的提示信息。
//必须设置ShowToolTips为true,当鼠标位于tab时显示提示
tabControl1.ShowToolTips = true;
tabPage1.ToolTipText = "你好,我是tab提示";
dataGridView1.ShowCellToolTips = true;
dataGridView1[0, 0].ToolTipText = "单元格的tip";
toolStrip1.ShowItemToolTips = true;
toolStripLabel1.AutoToolTip = true;
toolStripLabel1.ToolTipText = "toolStrip1子项的提示";
menuStrip1.ShowItemToolTips = true;
menuStrip按钮ToolStripMenuItem.AutoToolTip = true;
menuStrip按钮ToolStripMenuItem.ToolTipText = "menuStrip1子项的提示";
listView1.ShowItemToolTips = true;
listView1.Items[0].ToolTipText = "我是listViewItem的提示";
接本效果如下:
但默认提供的提示文本的显示,并不及时,并且,如果窗体不是焦点窗体,这些提示也都是无效的(而有的子项,如果是激活状态,tip也会无效)
ToolTip提示控件显式或主动的提示消息
通过ToolTip
控件可以设置在哪个控件上显示什么提示信息,以及通过事件触发的方式(比如hover、鼠标进入、键盘按键),显式的或多种条件下,展示提示框。
一个ToolTip同时为多个控件设置提示
ToolTip.SetToolTip(Control control, String caption)
方法为指定control
控件设置caption
提示消息。
并且,一个ToolTip可以应用多个控件。
toolTip.SetToolTip(button1, "我是按钮1提示");
toolTip.SetToolTip(radioButton1, "单选提示,必需选择");
toolTip.SetToolTip(buttonPro1, "使用ToolTip的提示");
显式设置ToolTip
根据需要在事件中显式的进行提示:
button1.MouseEnter += Button1_MouseEnter;
//...
private void Button1_MouseEnter(object sender, EventArgs e)
{
toolTip.SetToolTip(button1, "鼠标进入提示");
}
注:消息提示是跟随鼠标的,如果鼠标未在控件位置上方,提示也不会显示出来。
来源:https://juejin.cn/post/7135101480037515300


猜你喜欢
- 下面通过一段内容有文字说明有代码分析,并附有展示图供大家学习。要解析HTTP报文,需要实现以下操作:读取HTTP报头提供的各种属性分析属性值
- 开始接触分布式概念,学习之前要准备搭建Dubbo和Zookeeper环境的简单搭建。Window下安装Zookeeper和Dubbo-adm
- 前言数独是一种有趣的智力游戏,但是部分高难度数独在求解过程中经常出现大量单元格有多个候选数字可以填入,不得不尝试填写某个数字然后继续推导的方
- //Main:using System;using System.Collections.Generic;using System.Linq
- mysql实现配置中心本公司配置数据的管理是通过mysql进行配置管理,因为已经搭建好了,所以自己动手重新搭建一遍,熟悉整个流程。有关项目源
- 一、项目简述功能包括: 前台实现:用户浏览菜单、菜品分类筛选、查看菜单详 情、添加购物车、购物车结算、会员券、个人订单查询等 等。 后台实现
- Android9.0无法通过以下两种方式实现静默安装:1.runtime执行shell cmd2.PackageInstall 反射机制但是
- 前段时间做了一个练手的小项目,名叫Book_Bar,用来卖书的,采用的是三层架构,也就是Models,IDAL,DAL,BLL 和 Web
- 目录一、数组、集合和 LINQ1、数组二、字符串内插三、模式匹配四、委托和 Lambda 表达式五、async/await六、属性一、数组、
- 标准函数with与run和apply with函数with函数接收两个参数:第一个参数可以是任意类型的对象,第二个参数是一个Lambda表达
- 一、何为栈?栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称
- 互连网早期的时候,主机间的互连使用的是NCP协议。这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能。为了
- 在项目中有事需要对值为NULL的对象中Field不做序列化输入配置方式如下:[配置类型]:源码包中的枚举类:public static en
- 本文介绍如何通过C#程序代码方法将XML文件转换为Word文档,包括转为.doc /.docx等格式。并附VB.NET代码,有需要可供参考。
- 1、使用org.springframework.beans.BeanUtils.copyProperties方法进行对象之间属性的赋值,避免
- 安卓应用闪退后总会出现一个“抱歉,App已经停止运行”的弹窗,这样的用户体验并不好。很多大厂的App都去除了这个弹窗,因此本文主要介绍如何去
- 本文实例讲述了Android结束进程的方法。分享给大家供大家参考,具体如下:最近在做一个类似与任务管理器的东西,里面有个功能,可以通过这个管
- 关于静态类型检查和动态类型检查的解释:静态类型检查:基于程序的源代码来验证类型安全的过程;动态类型检查:在程序运行期间验证类型安全的过程;J
- 问题情况:在使用 @TableId(type = IdType.AUTO)之后添加的id数字特别大原因:因为在第一次使用的时候没有加注解 所
- 本文主要带大家看看Object类中一些常用方法的API文档的介绍和JDK中的源码。1.equals方法1.API中equals方法的介绍2.