在我很早的WInform隨筆《WinForm界面開發之"SplashScreen控件"》有介紹如何使用閃屏的處理操作,不過那種是普通WInform和DevExpress都適用的方案,如果是基于DevExpress,那么可以使用更簡便的方式,就是本文介紹的在DevExpress程序中使用SplashScreenManager控件實現啟動閃屏和等待信息窗口,這個SplashScreenManager很好的封裝了日常WInform程序中用到的啟動閃屏窗口和在耗時操作中進行等待提示的信息窗口,合理使用可以增加程序界面的友好交換。
1、SplashScreenManager控件的使用
這個控件一般人很少注意到,畢竟不是很常用,我們可以通過在控件工具箱里面進行搜索,找到后拖動到WInform窗口即可,如下界面所示。
然后在SplashScreenMananger控件的右上角上單擊三角符號,利用連接按鈕添加兩個窗口,一個是啟動界面的閃屏窗口,一個是等待界面窗口。
最后得到兩個新建的界面,稍作調整就可以使用在程序中了。
2、SplashScreenManager控件的調用
上面我們通過控件手工添加的方式增加了兩個界面窗體,如果需要在程序中使用,那么需要進行一定的代碼調用處理。
例如我們在程序啟動的時候,程序入口的代碼修改如下。
其中啟動閃屏窗口的代碼就是
//顯示閃屏窗體
SplashScreenManager.ShowForm(typeof(FrmSplashScreen));
Thread.Sleep(3000);
在主程序窗體中,我們加載完畢界面后,我們需要手工關閉閃屏窗體的顯示,代碼如下所示。
而在界面中,如果我們需要顯示等待窗口,如在耗時的數據獲取和更新操作上,我們可以提示用戶等待一下,那么這個時候就應該做等待信息窗口的顯示了,如下界面效果所示。
為了實現上面的操作,我們可以對這個窗口的調用做一些簡單的初始化和封裝處理,如下代碼所示。
private SplashScreenManager _loadForm;
/// <summary>
/// 等待窗體管理對象
/// </summary>
protected SplashScreenManager LoadForm
{
get
{
if(_loadForm == null)
{
this._loadForm = new SplashScreenManager(this, typeof(FrmWaitForm), true, true);
this._loadForm.ClosingDelay = 0;
}
return _loadForm;
}
}
/// <summary>
/// 顯示等待窗體
/// </summary>
public void ShowMessage()
{
bool flag = !this.LoadForm.IsSplashFormVisible;
if (flag)
{
this.LoadForm.ShowWaitForm();
}
}
/// <summary>
/// 關閉等待窗體
/// </summary>
public void HideMessage()
{
bool isSplashFormVisible = this.LoadForm.IsSplashFormVisible;
if (isSplashFormVisible)
{
this.LoadForm.CloseWaitForm();
}
}
最后在數據更新的時候,我們調用上面的函數
這樣就實現了兩種界面效果的處理了:啟動閃屏顯示、數據操作的等待信息,這兩個控件還可以在中間過程中調用更多的事件函數處理,如SendCommand等,從而實現更進一步的信息顯示。