【C#】組件發佈:MessageTip,輕快型消息提示窗

来源:http://www.cnblogs.com/ahdung/archive/2016/08/27/MessageTip.html
-Advertisement-
Play Games

註:本組件適用於.net2.0+的winform項目 樣子: 實際效果比這gif順滑,建議下載文末的Tester體驗 介紹: 如圖所見,這種提示在網頁、手機上用的較多,相比正經的消息框(如MessageBox),我認為好處有: 不需要用戶對消息本身做出響應,點啥【確定】什麼的 不阻塞、不幹預用戶的後 ...


註:本組件適用於.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

-文畢-


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 關鍵字RedisHelper,StackExchange.Redis,Redis幫助類 ...
  • 在很多項目裡面,對條形碼和二維碼的生成和列印也是一種很常見的操作,在Web項目裡面,我們可以利用JS生成條形碼和二維碼的組件有很多。本文引入兩個比較廣泛使用的JS組件,用來處理條形碼和二維碼的生成處理,並介紹如何利用CLODOP組件實現內容的列印輸出。生成條形碼使用組件JsBarcode,生成二維碼... ...
  • 現在需要匹配 [color=#000000],以"[color"開頭,以"[/color]"結束,中間字元數量不限制,最後返回所有匹配的下標。 代碼如下: ...
  • 在上篇隨筆《基於Metronic的Bootstrap開發框架經驗總結(12)--頁面鏈接收藏夾功能的實現》上,我介紹了鏈接收藏夾功能的實現,以及對收藏記錄的排序處理。該篇隨筆主要使用功能按鈕的方式移動收藏記錄,功能雖然實現的還算不錯,不過文章出來後,有讀者同行指出可以利用直接拖動的方式實現排序更方便... ...
  • Linq To Objects - 如何操作字元串 開篇語: 上次發佈的 《LINQ:進階 - LINQ 標準查詢操作概述》(90+贊) 社會反響不錯,但自己卻始終覺得缺點什麼!“紙上得來終覺淺,絕知此事要躬行”,沒錯,就是實戰!這次讓我們一起來看看一些操作字元串的技巧,也許能引我們從不同的角度思考 ...
  • 1.建立級聯刪除 Mr.E的級聯刪除並非資料庫自帶那個級聯刪除,而是Mr.E自帶的,所以它能觸發你C#裡面編寫的觸發器。 首先,建立級聯刪除關係,如下圖有兩個表,UserInfo和UserDocument, UserDocument表依靠UserID欄位,和UserInfo聯繫起來。現在我要實現,當 ...
  • 今天閑著沒事,研究了一下線上更新程式版本的問題。也是工作中的需要,開始不知道如何下手,各種百度也沒有找到自己想要的,因為我的需求比較簡單,所以就自己琢磨了一下。講講我的需求吧。自己在IIs上發佈了一個網站,這個網站僅僅只是內部使用的,網站的內容就是我的另外一個程式(就叫A程式吧)的打包發佈的文件放進 ...
  • 《C#基礎知識鞏固》 一、特性是什麼東東 二、什麼是反射、反射可以做些什麼 三、依賴註入是什麼 四、可空類型Nullable<T>到底是什麼鬼 五、談擴展方法的理解 六、你必須知道的EF知識和經驗【推薦】 七、你知道C#中的Lambda表達式的演化過程嗎 八、Linq表達式、Lambda表達式你更喜 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...