C# 添加启动窗口(启动界面)

说明

类似启动word,由于启动速度慢,先打开一个窗口,并显示进度条,加载完毕后,才显示主窗口

第一步:实现启动窗口

创建启动窗口

界面如下图:

添加进度条

略,没有设置其他属性

backgroundWorker

设置 DoWork、ProgressChanged、RunWorkerCompleted 3个事件函数

代码

public partial class StartForm : Form
{
    public StartForm()
    {
        InitializeComponent();
        this.FormBorderStyle = FormBorderStyle.None;
        //this.TopMost = true; // 显示在最前,窗口开始显示进度条时是透明的
        this.StartPosition= FormStartPosition.CenterScreen;
        progressBgWorker.WorkerReportsProgress= true;

        // 执行worker
        progressBgWorker.RunWorkerAsync();
    }

    private void progressBgWorker_DoWork(object sender, DoWorkEventArgs e)
    {
        //设置完成进度
        progressBgWorker.ReportProgress(10);
        // 这里写耗时操作
        progressBgWorker.ReportProgress(20);
        // 这里写耗时操作
        progressBgWorker.ReportProgress(40);
        // 这里写耗时操作
        progressBgWorker.ReportProgress(60);
        // 这里写耗时操作
        progressBgWorker.ReportProgress(80);
        // 这里写耗时操作
        progressBgWorker.ReportProgress(99);
        Thread.Sleep(600);
    }

    private void progressBgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        this.progressBar.Value = e.ProgressPercentage;
    }

    private void progressBgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {

        DialogResult = DialogResult.OK;
    }
}

第二步:修改Program

注释掉下面代码:

Application.Run(new Form1());

然后添加下面代码:

StartForm startForm= new StartForm();
if (DialogResult.OK == startForm.ShowDialog())
{
    // 关闭对话框不会销毁,调用Dispose()才销毁
    startForm.Dispose();
    Application.Run(new Form1());
}

参考:
https://www.cnblogs.com/gzskys/p/5661302.html