C 中製作啟動窗體的方法和問題

2021-07-13 04:33:45 字數 1078 閱讀 8706

2009-10-17 00:33:17

|  分類:程式|

舉報|字型大小訂閱

我的**書  |

在開發windows桌面程式時,經常碰到的乙個問題就是:在主窗體顯示之前,需要載入大量資料,這樣,當使用者啟動程式後,需要等待一段時間才可以看到主窗體。好的程式設計人員會為軟體加上乙個啟動窗體,並在後台執行載入資料的**,典型的應用如vs系列、photoshop等軟體。使用者一旦執行程式,首先看到的是啟動窗體以及窗體上顯示的相關資訊,以避免使用者產生啟動程式後沒有反應的誤解。

比如我的主窗體名稱是mainform,啟動窗體名稱是splachform,在顯示mainform之前需要載入大量資料,那麼可以先顯示splachform,並在上面以文字或進度條的形式顯示資料載入的情況,使用者知道應用程式在做什麼,也就可以耐心等待了。

splachform form=new splachform();

form.showdialog();

在splachform的load事件中新增**:

this.show();

this.refresh();

init();      //載入資料的方法

this.close();

這樣主窗體仍然是mainform,並且在載入完資料後自動顯示mainform。

更好的做法是使用執行緒技術,把啟動窗體和主窗體分為不同執行緒,先建立啟動窗體的執行緒,在完成載入資料的方法後,建立主窗體的執行緒,同時關閉啟動窗體執行緒。例如啟動窗體載入資料之後,需要顯示登入窗體,並根據使用者的登入情況來決定是否顯示主窗體,用這種方式實現就非常好。當使用者登入失敗或放棄登入時,不建立主窗體執行緒,退出程式,不會出現第二種方法的情況。需要注意的是,在vs2005以上的版本中,有乙個執行緒呼叫安全的問題。

三種方式都用過,第一種簡單,效果不太好。第二種也簡單,在只有啟動窗體並在啟動窗體完成後直接進入主程式的情況下,效果也不錯。第三種稍為麻煩,但可以處理的情況更多,如在主窗體顯示之前要顯示多個窗體,目前我只能用第三種方法來實現。第三種方法的**較多,懶得打字貼**了,記上一筆,以免日後又忘了……

C 啟動窗體的製作 基於執行緒技術實現

最近在做乙個winform的gis專案,想增加乙個啟動窗體。為了節約時間,到網上查了一圈,果然搜到一篇不錯的博文。其實原文已經說得很清楚了,我這裡就說一下啟動窗體介面設計中幾個需要設定的地方 1.cursor屬性設定為 waitcursor 2.formborderstyle屬性設定為 none 3...

C 窗體程式開機啟動的問題

功能 窗體程式 exe 開機啟動 實現 public void setautorun string filename,bool isautorun catch exception ex finally private void checkbox1 checkedchanged object send...

C 中無邊框異型窗體的製作

本篇內容來自 對於c 更改窗體外觀感覺並不那麼輕鬆 更改窗體外觀涉及到使用gdi 我所知道的有兩種方法 有系統邊框的窗體 處理窗體的paint方法,在paint方法中 引數e.graphics屬性將返回乙個物件 用來作畫 但是這個畫布的區域是窗體的客戶區 所以無法修改到窗體的標題欄 邊框等位置的。要...