写在前面

Minecraft Command Editor 2跳票了近两年的时间(对不起!!)。2021年2月,我重启了MCE项目,并正式命名为Minecraft Command Editor 2021,感谢大家三年来的支持,鞠躬!

在MCE项目中,Main窗体载入前,会进行数据库和其他配置的加载,在这个阶段,因此,在加载的空档期载入一个Loading窗口,有效的解决了从视觉上程序加载慢的问题。今天我们来说一个比较好的Loading窗体载入与销毁的方法。


一个Loading窗体载入与销毁的方法

首先我们来定义一个Form类:

namespace Minecraft_Command_Editor
{
partial class Loading{} // Loading Form
partial class Main{} // Main Form
partial class Settings{} // Settings Form
partial class About{} // About Form
}

在Program类中Main函数中插入:

Loading loading = new Loading();	// Creates the Loading object.
loading.ShowDialog(); // Shows the Loading Form as a modal dialog box.
if (loading.Visible == false)
{
Application.Run(new Main()); // Begins running a standard application message loop on the current thread, and makes the Main form visible.
}

最后Program类看起来长这样:

static class Program
{
[STAThread]
static void Main()
{
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Loading loading = new Loading(); // Creates the Loading object.
loading.ShowDialog(); // Shows the Loading Form as a modal dialog box.
if (loading.Visible == false)
{
Application.Run(new Main()); // Begins running a standard application message loop on the current thread, and makes the Main form visible.
}
}
}

这是一个单线程程序的Loading窗体载入方法,想要销毁Loading进入到Main窗体,则需要在Loading类的适当位置加入销毁代码即可。

例如:

using System;
using System.Windows.Forms;
using Functions.System; // Custom namespace
namespace Minecraft_Command_Editor
{
public partial class Loading : Form
{
private void Loading_Shown(object sender, EventArgs e)
{
Process.ThreadDelay(512); // Thread delay 512ms.
this.Close(); // Close Form.
}
}
}

写在后面

一年前,我在知乎也分享了一个Loading窗体载入的方法,方法不同但思路是一样的。

实际上,关于Main窗体的前置载入方法有很多,大家选择自己喜欢的即可。

最新文章

  1. iPhone 信号格转变数字
  2. C#窗体截屏,简单例子
  3. 利用strut2标签自动生成form前端验证代码
  4. php 调试工具及学习PHP垃圾回收机制了解引用计数器的概念
  5. 线性表 及Java实现 顺序表、链表、栈、队列
  6. Xcode7下载地址
  7. js变量声明与赋值以及函数声明
  8. 前端 HTML基础
  9. eclipse 404以及tomcat failed to start错误
  10. 一个关于native sql的程序
  11. rocketMQ No route info of this topic 错误
  12. SpringCloud系列------Config-Server
  13. Centos 7创建一个服务
  14. 实现 js 数据类型的判断函数type
  15. Deep Reinforcement Learning: Pong from Pixels
  16. 提高delete效率方法
  17. 软工网络15团队作业4——Alpha阶段敏捷冲刺3.0
  18. Spring Boot使用Servlet、Filter或Listener的方式
  19. js 判断数组重复元素以及重复的个数
  20. Oracle EBS AP更新供应商地址

热门文章

  1. 肝了很久,冰河整理出这份4万字的SpringCloud与SpringCloudAlibaba学习笔记!!
  2. Redis之面试连环炮
  3. ArrayList源码分析笔记
  4. rest framework Response
  5. 开源项目renren-fast-vue开发环境部署(前端部分)
  6. HDU_3949 XOR 【线性基】
  7. POJ_1227 Jack Straws 【二维平面判两线段相交】
  8. python-socket和进程线程协程(代码展示)
  9. python使用try...except语句处理异常
  10. 云原生的弹性 AI 训练系列之一:基于 AllReduce 的弹性分布式训练实践