【C#】一个Loading窗体载入与销毁的方法
2024-10-21 12:54:50
写在前面
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窗体的前置载入方法有很多,大家选择自己喜欢的即可。
最新文章
- iPhone 信号格转变数字
- C#窗体截屏,简单例子
- 利用strut2标签自动生成form前端验证代码
- php 调试工具及学习PHP垃圾回收机制了解引用计数器的概念
- 线性表 及Java实现 顺序表、链表、栈、队列
- Xcode7下载地址
- js变量声明与赋值以及函数声明
- 前端 HTML基础
- eclipse 404以及tomcat failed to start错误
- 一个关于native sql的程序
- rocketMQ No route info of this topic 错误
- SpringCloud系列------Config-Server
- Centos 7创建一个服务
- 实现 js 数据类型的判断函数type
- Deep Reinforcement Learning: Pong from Pixels
- 提高delete效率方法
- 软工网络15团队作业4——Alpha阶段敏捷冲刺3.0
- Spring Boot使用Servlet、Filter或Listener的方式
- js 判断数组重复元素以及重复的个数
- Oracle EBS AP更新供应商地址
热门文章
- 肝了很久,冰河整理出这份4万字的SpringCloud与SpringCloudAlibaba学习笔记!!
- Redis之面试连环炮
- ArrayList源码分析笔记
- rest framework Response
- 开源项目renren-fast-vue开发环境部署(前端部分)
- HDU_3949 XOR 【线性基】
- POJ_1227 Jack Straws 【二维平面判两线段相交】
- python-socket和进程线程协程(代码展示)
- python使用try...except语句处理异常
- 云原生的弹性 AI 训练系列之一:基于 AllReduce 的弹性分布式训练实践