【C#】组件发布:MessageTip,轻快型消息提示窗_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 【C#】组件发布:MessageTip,轻快型消息提示窗

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

 2016/8/28 5:32:01  ahdung  程序员俱乐部  我要评论(0)
  • 摘要:注:本组件适用于.net2.0+的winform项目样子:实际效果比这gif顺滑,建议下载文末的Tester体验介绍:如图所见,这种提示在网页、手机上用的较多,相比正经的消息框(如MessageBox),我认为好处有:不需要用户对消息本身做出响应,点啥【确定】什么的不阻塞、不干预用户的后续操作,就是单纯告诉你一声完事了视觉上通过动画效果保证消息的送达性,弥补因无干预可能造成的“被无视”这就是我所谓的【轻快型消息提示窗】,适用于:能快速出结果的操作
  • 标签:C# 发布

注:本组件适用于.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

-文毕-

发表评论
用户名: 匿名