,亦可使用自定义图标(使用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出多个消息的效果,如图: