天天看點

Winform開發的界面處理優化

在Winform開發中,客戶體驗是個很好的參考性名額,如果一個功能使用的時候感覺很流暢,說明我們的程式執行效率還不錯,但是随着資料的真多,原先可能流程的地方可能會變得比較卡,這時候就需要追本索源,找到症結并進行處理。但是,如果我們對Winform開發有一定的經驗積累,有些耗時緩慢的界面處理一開始還是比較容易避免,本文介紹一些在開發過程中的一些界面性能上的優化處理,希望對大家有幫助。

在我開發的CRM系統中,系統的一些使用者如經辦人員,來自權限管理系統,是以在開發的時候,并沒有模拟太多的使用者,是以,開始的設計處理是通過下拉清單列出相關的使用者即可,如下所示。

Winform開發的界面處理優化

最開始的考慮是讓使用者能夠快速選擇所需要的經辦人員,預設是目前使用者,這種設計開始不會有任何問題,因為資料少,測試起來非常流暢。

插入使用者的界面部分是這樣處理的,由于這個經辦人是很多界面地方用到的,是以把它封裝為一個界面控件,需要的地方拖過去使用即可,和普通的文本框一樣的使用方法。

Winform開發的界面處理優化

上面的控件初始化的時候,應該列出一些使用者資訊,如下所示。

1)優化一

上面的代碼粗看沒有什麼問題,但是我們知道,下拉清單為了提高效率,一般有一個BeginUpdate,EndUpdate的方法用來實作批量錄入。為了提高速度,這點我們需要利用上,然後代碼就修改為下面的處理方式。

在資料不算很多的時候,感覺速度比原來卻是快了一些。

但是發現我的權限系統使用者資料增加到幾百個的人員的時候,速度就有點卡了。問題出現在哪裡?

由于權限管理系統中使用者表是一個較為龐大的表,如下所示。

Winform開發的界面處理優化

每次擷取使用者的時候,我們調用了下面的代碼。

這個操作是把使用者的全部資訊字段都擷取一次,速度肯定比較慢了,那麼我們來改進一下,因為我們這裡控件隻需要綁定一些簡單的使用者名,使用者ID,使用者姓名等基礎字段,我們來簡化一個對象用來實作資料的擷取,如下所示。

于是我在權限管理系統定義了一個簡單的使用者對象,稱為SimpleUserInfo,它隻是包含了幾個基本的字段即可,這樣綁定代碼修改如下。

好了,速度很快了,一眨眼功夫,幾百個使用者都列出來了,非常高興。

上面确實感覺速度飛快了,幾百個使用者瞬間加載,解決了速度的問題,但是帶來了另外一個問題,幾百個使用者,我們通過清單選擇使用者是否太費眼力了呢,一個個找,沒有查找過濾?好費勁!

好既然速度提上來了,我們改進一下使用者體驗的效果吧,好像記得DevExpress有一個查找的下拉清單叫做SearchLookupEdit,就用它了。

先另外定義一個基于SearchLookupEdit的界面控件,如下所示。

Winform開發的界面處理優化

設定它裡面清單需要顯示的字段,如下所示。

Winform開發的界面處理優化

綁定代碼如下所示。

上面的設計和代碼綁定弄完成後,我們來看看具體的效果了。

Winform開發的界面處理優化

通過彈出的GridView裡面展示使用者資訊,并能支援查詢搜尋,選擇使用者速度快了很多,同時也提高使用者體驗。

說完了優化三,看到優化四,是不是心裡說道,不是吧,還有更好的?

當然,我們知道Winform裡面很多時候,資料可能都會被反複使用,如經辦人員,一般來說,很多界面可能都需要,那麼每次都需要從資料庫裡面取出幾百個使用者,效率上感覺還是不太好,特别如果是在我的混合式架構中用到的WCF的分布式擷取資料方式,也就是說資料不再本地,需要通過網絡方式擷取,那麼就會産生帶寬的問題,效率可能無法保證。

好了,說到這裡,就是指我想把這些常用到,不會經常變化的資料緩存起來,供下一步繼續使用。

好了,使用緩存擷取資料,我們隻需要稍微調整下控件的擷取資料代碼即可,如下所示。

如果有興趣,可以進一步了解這個系統的各種界面設計效果。