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

说明

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

第一步:实现启动窗口

创建启动窗口

界面如下图:

添加进度条

略,没有设置其他属性

backgroundWorker

设置 DoWorkProgressChangedRunWorkerCompleted 3个事件函数

代码

  1. public partial class StartForm : Form
  2. {
  3. public StartForm()
  4. {
  5. InitializeComponent();
  6. this.FormBorderStyle = FormBorderStyle.None;
  7. //this.TopMost = true; // 显示在最前,窗口开始显示进度条时是透明的
  8. this.StartPosition= FormStartPosition.CenterScreen;
  9. progressBgWorker.WorkerReportsProgress= true;
  10. // 执行worker
  11. progressBgWorker.RunWorkerAsync();
  12. }
  13. private void progressBgWorker_DoWork(object sender, DoWorkEventArgs e)
  14. {
  15. //设置完成进度
  16. progressBgWorker.ReportProgress(10);
  17. // 这里写耗时操作
  18. progressBgWorker.ReportProgress(20);
  19. // 这里写耗时操作
  20. progressBgWorker.ReportProgress(40);
  21. // 这里写耗时操作
  22. progressBgWorker.ReportProgress(60);
  23. // 这里写耗时操作
  24. progressBgWorker.ReportProgress(80);
  25. // 这里写耗时操作
  26. progressBgWorker.ReportProgress(99);
  27. Thread.Sleep(600);
  28. }
  29. private void progressBgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
  30. {
  31. this.progressBar.Value = e.ProgressPercentage;
  32. }
  33. private void progressBgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  34. {
  35. DialogResult = DialogResult.OK;
  36. }
  37. }

第二步:修改Program

注释掉下面代码:

  1. Application.Run(new Form1());

然后添加下面代码:

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

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


原文出处:https://malaoshi.top/show_1GWjgsaorMb.html