写在前面
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 Formpartial class Main{} // Main Formpartial class Settings{} // Settings Formpartial 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 namespacenamespace 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窗体的前置载入方法有很多,大家选择自己喜欢的即可。