C# WinForm 等待窗體的實(shí)現(xiàn)
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
最近在做一個(gè)項(xiàng)目,需要用到等待窗體,在DevExpress下面有SplashScreen控件可以使用,同時(shí)也有ProgressIndicator控件能用,但是如果沒(méi)有用Dev開(kāi)發(fā)的話,我們就需要自定義一個(gè)等待窗體了。 本項(xiàng)目開(kāi)放源代碼,下載地址見(jiàn)本文末尾(如果本程序有幫助到您,希望留言評(píng)論,感謝) VS環(huán)境:vs2017,低版本環(huán)境可以使用VS Convert轉(zhuǎn)換工具進(jìn)行版本轉(zhuǎn)換,或者直接看源代碼,復(fù)制到新項(xiàng)目中也可以。 首先,把截圖放上來(lái):(界面沒(méi)有優(yōu)化) 多功能Loading中,實(shí)現(xiàn)了實(shí)時(shí)顯示執(zhí)行進(jìn)度的功能,該功能也可以改進(jìn)為用進(jìn)度條顯示。
實(shí)現(xiàn)的功能比較簡(jiǎn)單,就是在程序處理 一些耗時(shí)比較多的代碼時(shí),將Loading窗體展示給用戶,并在后臺(tái)執(zhí)行耗時(shí)操作,這樣能夠給用戶較好的體驗(yàn)。 核心代碼是我自己寫(xiě)的一個(gè)SplashScreenManager類:有2個(gè)方法:1、ShowLoading()2、CloseLoading() 調(diào)用方法舉例: //實(shí)例化一個(gè)窗口,窗口需要自己定義哦 SimpleLoading loadingfrm = new SimpleLoading(this); //將Loaing窗口,注入到 SplashScreenManager 來(lái)管理 GF2Koder.SplashScreenManager loading = new GF2Koder.SplashScreenManager(loadingfrm); loading.ShowLoading(); //try catch 包起來(lái),進(jìn)行異常處理 try { //模擬耗時(shí)操作 for (int i = 0; i < 20; i++) { Thread.Sleep(100); } } catch (Exception) { /*可選處理異常*/ } finally { loading.CloseWaitForm(); } 需要顯示進(jìn)度的話,舉例: public static bool flag = true; private void button2_Click(object sender, EventArgs e) { flag = true;//flag 為false時(shí)候,退出執(zhí)行耗時(shí)操作 MultiFuncLoading loadingfrm = new MultiFuncLoading(this); // 將Loaing窗口,注入到 SplashScreenManager 來(lái)管理 GF2Koder.SplashScreenManager loading = new GF2Koder.SplashScreenManager(loadingfrm); loading.ShowLoading(); // 設(shè)置loadingfrm操作必須在調(diào)用ShowLoading之后執(zhí)行 loadingfrm.SetTxt("多功能Loaidng界面", "拼命加載中...客官耐心等待", "Please Waitting..."); // try catch 包起來(lái),進(jìn)行異常處理 try { //模擬耗時(shí)操作 for (int i = 0; i < 100; i++) { Thread.Sleep(100); loadingfrm.SetJD("當(dāng)前:"+i+"/總計(jì):100","當(dāng)前進(jìn)度:"+i); if (!flag) { break;/*用戶點(diǎn)擊取消執(zhí)行后,跳出循環(huán)*/ } } } catch (Exception) { /*可選處理異常*/ } finally { loading.CloseWaitForm(); } } 附錄: 這個(gè)程序的第一個(gè)版本參考了 網(wǎng)名為 “八哥” 的一個(gè)程序,當(dāng)時(shí)我在群里面的時(shí)候,感謝他的熱情幫助。 現(xiàn)將我的代碼貼出來(lái)吧,里面用的了委托的概念。大家如果不懂的話,可以百度一下,這里給出幾個(gè)鏈接: http://blog.csdn.net/ggz631047367/article/details/44646233 http://www.runoob.com/csharp/csharp-delegate.html http://blog.csdn.net/sjj2011/article/details/7835200 http://blog.csdn.net/testcs_dn/article/details/37671513 另外附上下載鏈接:V1.0 不支持下載 (該版本有BUG,線程在init函數(shù)中調(diào)用的,可能會(huì)出現(xiàn)卡頓,請(qǐng)下載V2版本) V2版本下載地址:V2.0下載(新建進(jìn)程執(zhí)行耗時(shí)操作,該版本不再提供下載) V3版本下載地址:V3.0下載(主進(jìn)程執(zhí)行耗時(shí)操作) 該文章在 2021/1/30 12:50:06 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |