【C#】组件发布:MessageTip,轻快型消息提示窗

注:本组件适用于.net2.0+的winform项目

样子:

实际效果比这gif顺滑,建议下载文末的Tester体验

介绍:

如图所见,这种提示在网页、手机上用的较多,相比正经的消息框(如MessageBox),我认为好处有:

  • 不需要用户对消息本身做出响应,点啥【确定】什么的
  • 不阻塞、不干预用户的后续操作,就是单纯告诉你一声完事了
  • 视觉上通过动画效果保证消息的送达性,弥补因无干预可能造成的“被无视”

这就是我所谓的【轻快型消息提示窗】,适用于:

  • 能快速出结果的操作,比如在本地库跑个小语句啥的。如果是耗时操作,显然弄个进度提示更合适,比如这个
  • 只需要反馈小量信息的情形,通常不应超过15字。如果需要反馈大量信息,可以尝试这个

特点:

  • 在鼠标附近显示消息。所以不适合耗时任务,因为等任务执行完,鼠标都不知跑哪里去了
  • 内置3种消息性质的图标,,亦可使用自定义图标(使用Show方法)
  • 上浮动画效果可开闭(属性AllowFloating,影响后续弹出的消息窗)
  • 可以只显示图标或文本,甚至图标文本全无也行~虽然这样没意思

用法:

//开闭上浮动画。默认开启
MessageTip.AllowFloating = true|false;

//默认停留时长(毫秒)。当ShowXXX中指定负值delay时,使用该值,默认500
MessageTip.DefaultDelay = int;

//文本(可为null或"",下同)、图标(为null时不显示图标)、停留时长(可选,下同,负值则使用DefaultDelay)
MessageTip.Show("阿斯蒂芬", image | null, [delay]);

//文本,内置的绿勾图标,停留时长
MessageTip.ShowOk("执行成功", [delay]);

//文本,内置的黄色感叹号图标,停留时长
MessageTip.ShowWarning("执行成功", [delay]);

//文本,内置的红叉图标,停留时长
MessageTip.ShowError("执行成功", [delay]);

背景:

这东西我很早就想写了,因为很多时候正儿八经的弹出个MessageBox会影响心情,本来就是告知一声的事情,非得要去点一下确定,烦人,但因为一直有各种破事,到今天才弄。一开始是用AnimateWindow这个win32 API实现(MSDN),但它没有上浮的效果,所以干脆自己实现,原理无非是步进修改窗体的透明度(Opacity)和位置(Location),只是采用了异步的手段。异步在两个地方有使用,一是改变Location,目的是不让它与透明度动画打架;二是Show窗体时也是异步,目的是从线程层面完全与主UI线程隔离,达到快速Show出多个消息的效果,如图:

不然就只能等一个消息完全消失完才能显示下一个,并且在主线程Show的话,有可能阻塞用户的其它操作。

最后,恳请指出问题,或告知已有的更好方案,感谢!

工程已放网盘,里面有个Tester供你体验,就是第一幅图那个。http://pan.baidu.com/s/1dEVjzMD

-文毕-

时间: 2024-10-23 00:59:13

【C#】组件发布:MessageTip,轻快型消息提示窗的相关文章

Android消息提示:AlertDialog、Toast、Notification的使用

主要介绍Android常用于消息提示的组件:ALertDialog.Toast.Notification的使用场景以及它们的基本用法,探讨一些高级主题,最后总结一些开发过程中常见的问题. 首先我们来对这三种消息提示机制来一个直观的认识,分别是AlertDialog Toast.Notification 接下来分别介绍这三种机制各自对应的使用场景和用法 AlertDialog 使用场景:AlertDialog在应用内的使用还是很常见的,常用于让用户做出某种选择,而这种选择一定是简单的交互,如果是复

View(视图)——AutoCompleteTextView 、Spinner和消息提示

一.AutoCompleteTextView 自动提示文本输入框 1.属性:不区分大小写. 2.ArrayAdapter  适配器 数据源是String[ ]或集合,保存要提示的文本:layout文件. 3.completionThreshold:设置提示需要的最少字符数,默认是2. 二.Spinner 下拉列表 1.ArrayAdapter  适配器 数据源是String[ ]或集合,保存要提示的文本:layout文件. 2.监听器   AdapterView.OnItemSelectedLi

Android消息提示框Toast

Toast是Android中一种简易的消息提示框.和Dialog不一样的是,Toast是没有焦点的,toast提示框不能被用户点击,而且Toast显示的时间有限,toast会根据用户设置的显示时间后自动消失. 创建Toast的方法总共有2种: 1.Toast.makeText(Context context, (CharSequence text)/( int resId), int duration) 参数:context是指上下文对象,通常是当前的Activity,text是指自己写的消息内

(RPA学习)使用多线程点击 VBA 运行中的消息提示框

艺赛旗RPA全面免费下载中点击下载http://www.i-search.com.cn/index.html?from=line27 业务场景使用 win32com 运行 Excel 中的宏运算(VBA),会遇到 VBA 运行的最后一步会弹出消息提示框,需点击这个消息提示框之后,VBA 才能运行结束,所以在运行 VBA 之后加入 Try 组件去点击时无法点击的,所以考虑使用多线程来实现. 流程代码import ubpa.iautomation as iautomationimport threa

AJAX调用完成后的消息提示框

之前因为写一些验证,会在调用成功或者失败后用到一些消息提示框,但找了很多了没找到比较合适的,对于一些框架中的组件感觉用着也不是很方便,于是自己用js写了一个简单的提示框,代码如下: var appendHTML=function(el, html){ var divTemp = document.createElement("div"), nodes = null // 文档片段,一次性append,提高性能 , fragment = document.createDocumentFr

jQuery - toastr消息提示插件(取代alter())

toastr插件详细参考资料 项目地址:https://github.com/CodeSeven/toastr 使用方法 (1)添加引用 <!-- 消息提示 --> <link href="/assets/JS/plugins/bootstrap-toastr/toastr.min.css" rel="stylesheet" type="text/css" /> <!--消息提示--> <script t

iOS 实现角标 新消息提示红点 数字角标

镔哥今天写写实习新消息提示的小圆圈数字角标 直接上代码吧. 1:直接复杂uibarButton类 // //  UIBarButtonItem+Badge.h //  therichest // //  Created by 淘股 on 2015-05-05. //  Copyright (c) 2015 taogu Inc. All rights reserved. // #import <UIKit/UIKit.h> @interface UIBarButtonItem (Badge) @

仿微信新消息提示音

怕有些人不知道怎么进入微信的新消息提示音功能,我这里说下操作步骤: 打开微信----我---设置---新消息提醒---新消息提示音. 经过以上的步骤就进入了这样的界面 具体实现的步骤. 难点之一:获取到手机系统的提示音,并将它们显示在一个listview里面. 参考如下代码: // 获得RingtoneManager对象   RingtoneManager manager = new RingtoneManager(this);   // 设置RingtoneManager对象的类型为TYPE_

UWP中的消息提示框(一)

不管什么平台,应用内难免会出现一些消息提示框,下面就来聊聊我在UWP里用到的消息提示框. 弹窗也可按是否需要用户操作促发一些逻辑进行分为两大类. 不需要用户干涉的一类: MessageDialog:操作简单,写起来也省事,想具体了解的请参考MSDN 先看看效果 PC上效果: mobile上效果: 再看看代码(●'?'●) 前台: <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" >