Bootstrap

C# 桌面应用添加启动等待画面(SplashScreen)

最近闲下来,准备看看优化一下公司的旧系统,首先应用打开时没有启动等待画面,如果初始化应用时间过长会让用户认为没有启动成功,所以启动画面是很有必要的,先弄这个吧。

很多文章都对DevExpress的SplashScreenManager控件进行详细的应用实例介绍,我就不再介绍这个控件了,具体文章可以查看这两个文章:
SplashScreenManager控件介绍
SplashScreen和WaitForm使用

还有一种更简单的方式来创建一个启动画面(如果不需要加载进度条展示的话),只需要新建一个Form窗体FormSplashScreen,将窗体属性FormborderStyle设为None,设置BackgroundImage背景图为欢迎界面图。
在这里插入图片描述
然后在主界面的构造函数中创建FormSplashScreen实例并展示,然后在应用初始化加载结束后关闭这个画面即可,足够简单和实用。代码如下:

    //程序开启时等待界面
    FormSplashScreen formSplashScreen = null;

    public FormMain()
        {
            //时间格式化解决iis时间格式问题
            Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN", true) 
            { DateTimeFormat = { ShortDatePattern = "yyyy-MM-dd", FullDateTimePattern = "yyyy-MM-dd HH:mm:ss", LongTimePattern = "HH:mm:ss" } };
            //系统配置初始化
            InitializeComponent();
            
            //展示启动画面
            //this.WindowState = FormWindowState.Minimized; //将主界面的边框尺寸设置为最小 
            formSplashScreen = new FormSplashScreen();
            formSplashScreen.Show();
            
            #region 应用初始化准备 例如:
            //定义服务端启动后窗口所在位置
            StartPosition = FormStartPosition.CenterScreen;
            //关闭对文本框的非线程操作检查  
            TextBox.CheckForIllegalCrossThreadCalls = false;
            //判断数据库是否可连接:解决数据库连不上时点击软件没有反应的情况
            if (!netDataCtrlBLL.SqlConnect()) 
            {
                //数据库连接不上时,给出提示
                MessageBox.Show("数据库无法连接,请检查配置信息和数据库是否存在!", "初始化错误信息提示");
                formSplashScreen.Dispose();
                this.Dispose();
            }
            LogHelper.WriteLog("*********系统初始化时数据库连接成功**********");
            //系统初始化时进行历史数据备份
            //设定定时器
            setTaskAtFixedTime();
            try
            {
                netDataCtrlBLL.byteDataInsertH();
                LogHelper.WriteLog("*********系统初始化时历史数据备份成功**********");
            }
            catch(Exception ex)
            {
                MessageBox.Show("历史数据备份失败!错误原因: " + ex.Message, "错误信息提示");
                LogHelper.WriteLog("*********历史数据备份失败!错误原因: " + ex.Message +"*********");
            }
            #endregion

            formSplashScreen.Dispose();
            formSplashScreen.Close();
            //this.WindowState = FormWindowState.Normal; //展示主界面
        }

完成。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;