現在的程式,越來越講究ux了(使用者體驗),能否贏得使用者的青睞,很多時候是由ux的高低來決定的.
今天,我來為大家介紹一下,如何在winforms下提高應用程式ux的一點研究:給你的程式加個啟動動畫.內容很初級,高手可以直接next了.
好,我們直接切入主題.大家知道,當我們使用office或vs時,首先會顯示一張好看的啟動(或動畫),等所有內容在後台載入完了,才顯示出office或vs的操作主介面.這樣的做法,大家可謂是司空見慣了,但它是如何現實的呢?
其實,現實起來也不難,主要的思路是這樣的:
先製作乙個視窗,將背景設計為你的啟動
在第二個執行緒中,實時報告載入的進度,將進度顯示在第乙個視窗中.
main執行緒等待第二線程,直到所有資源載入完畢.
所有資源載入完畢後,main執行緒關閉帶有的視窗,顯示主視窗(真正的操作介面)給使用者.
程式啟動完畢.
下面用uml的時序圖來說明這一過程:
下面,我們來仔細看一看,如何在.net中現實這一功能:
第一步,還是製作啟動視窗,並為其加上背景,標題和狀態.
第二步,在main方法中編寫主要的**.
1:///
2:///
3:///
4:[stathread
]
5:static void
main()
6:));
28:}
29:
30:thui.join();
31:.run(
new
frm_main
());
32:splashform是program類中乙個static的屬性,用來跨執行緒訪問的.我這裡沒有處理執行緒安全問題,大家可以按實際情況,加個lock}
1:public static
frm_splash
splashform
2:
6:下面是顯示啟動視窗的**,很簡單.
1:private static void
showsplashwindow()
2:載入資源的**,關鍵是要實時更新載入的進度和狀態.其實可以抽出乙個方法專門更新status,以免像下面的**重複.
1:private static void
loadresources()
2:));
8:}
9:thread
.sleep(100);
10:}
11:splashform.invoke(
new
methodinvoker
(delegate
));
12:注意,不要試圖在這個方法中更新lblstatus.text,那樣會有exception有現.}
必須要呼叫splashform.invoke.這是因為splashform和它的控制項是在另乙個執行緒中建立的,.net預設不允許其他執行緒更新控制項的狀態.
而invoke,是代表用建立控制項的那個執行緒呼叫**中的方法.
到此,所有工作完成.下圖是執行時的效果.
怎樣給你的shell指令碼自動加上資訊
1.什麼是shell shell是作業系統中的乙個軟體,包含在linux核心的外面,為使用者和核心之間的互動提供了乙個介面。系統中的命令用shell去解釋shell接受系統回應的輸出並顯示其到螢幕中。2.什麼是shell指令碼 指令碼是一種解釋性語言 用shell指令碼儲存執行的動作 用指令碼判定命...
給你的cvs伺服器加上郵件通知
為什麼要用cv ail 當我們開發人員分散各處時,很難了解cvs server上到底更新了什麼,而且每天去閱讀cvs上大量的更新日誌也是一件很麻煩的事情。通過cv ail,你可以及時準確的通知每個開發人員伺服器上的內容發生了什麼更新。前提 假設你已熟知cvs伺服器設定指南 http www.best...
vs2008WinForms應用程式窗體簡介
在windows forms中,窗體是用於向使用者顯示資訊的可檢視面。如果把構建可視程式介面看做畫圖,那麼窗體就類似於做圖用的畫布,在畫布上可以新增任何影象。通過在窗體上放置控制項,並開發對使用者操作 如滑鼠單擊或按鍵 的響應來構建windows forms應用程式。窗體比作畫布,那麼控制項就是畫布...