聲明:代碼照搬自SharpDevelop源碼。
啟動畫面是程式啟動加載元件時一個讓使用者稍微耐心等待的提示框。一個好的軟體在有啟動等待需求時必定做一個啟動畫面。啟動畫面可以讓使用者有心理準備來接受程式加載的緩慢,還可以讓使用者知道加載的進度和内容。本文隻是記錄最簡單的構架。
VS2010建立一個C# Windows窗體應用程式,将主窗體改名為FormMain,再建立一個窗體起名為SplashScreen。向程式中加載一個圖檔作為啟動畫面,如下圖
然後編輯SplashScreen.cs代碼
/// <summary>
/// 啟動畫面
/// </summary>
public partial class SplashScreen : Form
{
/// <summary>
/// 啟動畫面本身
/// </summary>
static SplashScreen instance;
/// <summary>
/// 顯示的圖檔
/// </summary>
Bitmap bitmap;
public static SplashScreen Instance
{
get
{
return instance;
}
set
{
instance = value;
}
}
public SplashScreen()
{
InitializeComponent();
// 設定窗體的類型
const string showInfo = "啟動畫面:我們正在努力的加載程式,請稍後...";
FormBorderStyle = FormBorderStyle.None;
StartPosition = FormStartPosition.CenterScreen;
ShowInTaskbar = false;
bitmap = new Bitmap(Properties.Resources.SplashScreen);
ClientSize = bitmap.Size;
using (Font font = new Font("Consoles", 10))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.DrawString(showInfo, font, Brushes.White, 130, 100);
}
}
BackgroundImage = bitmap;
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
if (bitmap != null)
{
bitmap.Dispose();
bitmap = null;
}
components.Dispose();
}
base.Dispose(disposing);
}
public static void ShowSplashScreen()
{
instance = new SplashScreen();
instance.Show();
}
}
然後在主程式啟動時調用
static class Program
{
/// <summary>
/// 應用程式的主入口點。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// 啟動
SplashScreen.ShowSplashScreen();
// 進行自己的操作:加載元件,加載檔案等等
// 示例代碼為休眠一會
System.Threading.Thread.Sleep(3000);
// 關閉
if (SplashScreen.Instance != null)
{
SplashScreen.Instance.BeginInvoke(new MethodInvoker(SplashScreen.Instance.Dispose));
SplashScreen.Instance = null;
}
Application.Run(new FormMain());
}
}
效果如下圖所示: