• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • C#使用ApplicationBase模型顯示Splash Screen

    發表于:2007-04-28來源:作者:點擊數: 標簽:模型顯示使用
    我已經介紹過如何在C#中使用Visual Basic的My.Application模型,但是我沒有突出用了他之后有什么比原本C#使用的方式更好的地方。所以我將追加幾篇帖子,讓C# 程序員 進一步了解采用這種新Application模型的優點。 顯示Splash Screen是現代軟件常用的手段,顯

    我已經介紹過如何在C#中使用Visual Basic的My.Application模型,但是我沒有突出用了他之后有什么比原本C#使用的方式更好的地方。所以我將追加幾篇帖子,讓C#程序員進一步了解采用這種新Application模型的優點。

    顯示Splash Screen是現代軟件常用的手段,顯示一個多彩繽紛的Splash Screen可以讓應用程序啟動的感覺速度加快。但是如何顯示Splash Screen呢,首先這個窗口必須先于主窗體出現,而且必須在主窗體初始化完畢以后消失。這個對老手不成問題,但是對于新手,往往無法控制窗體前后顯示的問題,導致產生出很多不“地道”的解決方式?,F在,如果你用了ApplicationBase模型,就可以很容易地實現一個Splash Screen的最佳模式。(對于Visual Basic程序員,此功能只需要在IDE中選擇即可,無需編碼)

    首先準備你的主窗體和Splash Screen窗體,假設主窗體是Form1而Splash Screen是Form2。你需要繼承System.Windows.Forms.WindowsFormsApplicationBase類:

    class MyApplication : System.Windows.Forms.WindowsFormsApplicationBase
    {
        public MyApplication() : base(AuthenticationMode.Windows)
        {
            EnableVisualStyles = true;
            ShutdownStyle = ShutdownMode.AfterMainFormCloses;
        }
    clearcase/" target="_blank" >cc99>

        protected override void OnCreateMainForm()
        {
            MainForm = new Form1();
        }


        protected override void OnCreateSplashScreen()
        {
            SplashScreen = new Form2();
        }


    }

    非常簡單,只需要重寫兩個方法——OnCreateMainForm和OnCreateSplashScreen方法,分別指定主窗體和Splash Screen窗體即可。接下來我們創建MyApplication類的默認實例,按照慣例使用My作類名:

    static class My
    {
        private static MyApplication _app;
        private static object _appSyncRoot = new object();

        public static MyApplication Application
        {
            get {
                if (_app == null)
                {
                    lock (_appSyncRoot)
                    {
                        if (_app == null)
                        {
                            _app = new MyApplication();
                        }
                    }
                }
                return _app;
            }
        }
    }

    最后修改Main方法,將其中原來所有的Application類方法調用的語句全部去掉,改為My.Application.Run(),如下:

    [STAThread]
    static void Main()
    {
        // Application.EnableVisualStyles();
        // Application.EnableRTLMirroring();
        // Application.Run(new Form1());

        My.Application.Run();
    }

    現在只要直接運行你的程序,就可以看到Splash Screen在工作了。嗯?好像太快看不清?這是因為你的主窗體初始化太快了。這個Splash Screen只在主窗體初始化的過程中才顯示。為了增加Splash Screen顯示的時間,我們可以人為增加主窗體初始化時間。只要在主窗體的構造函數中添加一些延時即可:

    public Form1()
    {
        InitializeComponent();

        //延時以增加Splash Screen的顯示時間
        System.Threading.Thread.Sleep(1000);
    }

    其實若主窗體顯示速度很快,本身就不用Splash Screen,只有當主窗體需要進行復雜的初始化時,才需要顯示Splash Screen來加快“心理速度”。此外,如果你在運行程序的時候加了/nosplash或者-nosplash參數的話,Splash Screen就不會顯示,十分體貼的設計吧。

     

    另注:System.Windows.Forms.WindowsFormsApplicationBase這個類在Microsoft.VisualBasic.dll中!要使用先引用

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>