初次接觸啟動介面記不清是在哪一年了,估計是小學四年級第一次開啟office word的時候吧,更記不清楚當時的啟動介面是長啥樣了。後來隨著使用的軟體越來越多,也見到各式各樣的啟動介面。下面就列舉了兩個平常本人平常最常見的窗體,其實windows系統在啟動的過程中,有window字樣並且有動畫效果的那個節面也算是乙個啟動介面。
其目的很明顯,就是程式啟動之後,由於載入主介面的時間過長而導致使用者體驗不佳,於是往往在顯示主介面之前多顯示乙個不帶windows窗體元素的窗體,來顯示應用程式載入的進度或者直接是乙個靜態的檢視,作用在於就是跟使用者反映程式是有響應的並且正在執行當中,從而提高使用者體驗。下面是我的載入窗
主要是仿照了office 2013的風格
簡約明了。其中窗體的底色,字型,文字顏色可以更改,左上角的製造商,中間的軟體名稱,左下角的進度資訊都可以更改。不過暫時還沒有把圖示附加到左上角而已。
窗體的設計如下所示
載入窗的製造商,軟體名稱這些資訊通過建構函式傳參進行設定,此外預設的建構函式被遮蔽了
1對窗體的開啟並非用單純的show或者showdialog,因為在主線程上show的話,本身主線程要載入時就會阻塞,這樣再阻塞的執行緒上show的話,窗體難以顯示。如果用showdialog的也不行,雖然它可以讓窗體顯示出來,但是呼叫了showdialog之後直到窗體關閉了才返回。就是說載入窗關閉了之後才執行載入載入之類的操作,這樣顯得毫無意義。private
loadingform()25
6()719 }
這裡只是用來了乙個非同步去showdialog。**如下
1這裡在showdialog之前還多作了乙個判斷,在於關閉窗體的方法時釋放了資源,因此在幾個地方都要注意,關閉窗體的處理如下public
void
showloading()2);
8 callback.begininvoke(null, null
);9 }
1由於呼叫了invoke,這個需要判斷當前窗體是否已經是顯示了出來,否則就會因為窗體的控制代碼不存在而丟擲異常。public
void
closeloading()2);
11}12 }
在窗體上顯示的進度資訊,只是通過了乙個外放的屬性實現,其判斷的用意跟關閉窗體時的一樣。
1為了窗體能具備可拖拽的效果,還額外加了一下的**public
string
message
3set4);
11}12}
13 }
1 [dllimport("呼叫的形式如下user32.dll")]
2private
static
extern
bool
releasecapture();
3 [dllimport("
user32.dll")]
4private
static
extern
bool sendmessage(intptr hwnd, int wmsg, int wparam, int
lparam);
5private
const
int wm_syscommand = 0x0112;6
private
const
int sc_move = 0xf010;7
private
const
int htcaption = 0x0002;8
9protected
void loadingform_mousedown(object
sender, mouseeventargs e)
10
loadingform frm = new loadingform("hopegi
", "
猴健工具集
", "
啟動中...");
frm.showloading();
//一系列操作
frm.message = "
載入介面...";
//一系列操作
frm.closeloading();
1loadingformpublic
partial
class
loadingform : form216
17()
1830}31
32public
string
message
34set
35);42}
43}44}
4546
public
void
showloading()
47);
53 callback.begininvoke(null, null
);54}55
56public
void
closeloading()
57);66}
67}6869
70private
string
71get 76}
7778
private
void btnclose_click(object
sender, eventargs e)
7983
84protected
void loadingform_mousedown(object
sender, mouseeventargs e)
8590
91#region windows form designer generated code
9293
///94
///required method for designer support - do not modify
95///
the contents of this method with the code editor.
96///
97private
void
initializecomponent()
98187
188#endregion
189190
private
system.windows.forms.label lblogo;
191private
192private
system.windows.forms.picturebox picloading;
193private
system.windows.forms.label lbmsg;
194private
system.windows.forms.picturebox btnclose;
195196 }
仿MSN的冒泡窗體
1 新建一工程 在form1上放乙個button按鈕 2 新增引用popprogram.dll 3 程式頂部寫入 private withevents taskbarnotifier2 as popprogram.popprogram 4 初始化資料form1 load事件 private sub ...
C WPF有趣的登入載入窗體
時間如流水,只能流去不流回!點讚再看,養成習慣,這是您給我創作的動力!本文 dotnet9 已收錄,站長樂於分享dotnet相關技術,比如winform wpf asp.net core等,亦有c 桌面相關的qt quick和qt widgets等,只分享自己熟悉的 自己會的。站長使用.net co...
程式的載入
當乙個程式使用fork 建立了乙個子程序時候,這個子程序共享父程序的 和資料,所以通常再用exec 載入執行另乙個新程式,此時子程序的 資料 包括堆 棧 將完全被新程式替換掉,並在子程序中開始執行新程式,這個過程就是新程序的載入,下面就以0.11核的exec 函式為基礎說一下linux新程序的載入過...