【C#】一个Loading窗体载入与销毁的方法
写在前面
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窗体的前置载入方法有很多,大家选择自己喜欢的即可。
【C#】一个Loading窗体载入与销毁的方法的更多相关文章
- [译]NeHe教程 - 创建一个OpenGL窗体
原文: Setting Up An OpenGL Window 欢迎阅读我的OpenGL教程.我是一个热爱OpenGL的普通码农!我第一次听到OpenGL是在3Dfx刚发布他们给Voodoo I显卡的 ...
- 一款炫酷Loading动画--载入失败
简单介绍 上一篇文章一款炫酷Loading动画–载入成功.给大家介绍了成功动画的绘制过程,这篇文章将接着介绍载入失败特效的制作. 相比成功动画,有了前面的经验,失败动画的过程就显得比較简单了. 动画结 ...
- 第一个Python窗体程序
新建ui_MainWindow.py文件 # encoding: UTF-8 # Qt相关和十字光标 from PyQt4.QtGui import * from PyQt4.QtCore impor ...
- java—实现一个监听器HttpServletRequest的创建销毁、在线人数 (56)
在JavaWeb中的监听器分类 在Javaweb中存在三个被监听对象: HttpServletRequest HttpSessoin ServletContext 监听者 被监听者 监听到事件对象 H ...
- 机房收费系统之【只允许一个MDI窗体 错误:426】 标签: vb 2014-08-15 10:36 1149人阅读 评论(23)
机房收费系统的主窗体是MDI窗体,为了在这个窗体上添加控件,所以我们在窗体上添加了picture控件,在MDI窗体中,子窗体实际上位于MDIClient里,即子窗体的父窗体就是MDIClient,而放 ...
- C#跨窗体传值的几种方法分析(很详细)
创建一个Winform窗体应用程序项目,然后添加一个Form2窗体. 在Form1和Form2中各添加一个textBox和button: 单击Form1中的button1,弹出Form2,然后要做的就 ...
- C# 单例模式和窗体的单例打开方法
第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我…… public class Singleton{ private static Singleton ...
- 【重要】U3D存放本地游戏存档——不同平台载入XML文件的方法——IOS MAC Android
在PC上和IOS上读取XML文件的方式略有差别,经测试,IOS上不支持如下方法载入XML文件: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load( ...
- (转)U3D不同平台载入XML文件的方法——IOS MAC Android
自:http://www.cnblogs.com/sifenkesi/archive/2012/03/12/2391330.html 在PC上和IOS上读取XML文件的方式略有差别,经测试,IOS上不 ...
随机推荐
- linux之安装nginx
nginx官网:http://nginx.org/en/download.html 1.安装nginx所需环境 a) PCRE pcre-devel 安装 # yum install -y pcre ...
- Vue前端项目的搭建流程
1. 安装Vue和Nodejs 2. 创建项目 vue create eduonline-web
- C++入门(1):计算机组成
系列文章尽在 | 公众号:lunvey 学习C++之前,我们有必要了解一下计算机的简单组成,毕竟C++是需要操作内存的一门语言.大家或许知道内存是什么,但是内存怎么读取和操作数据以及数据的表现形式会不 ...
- 中小企业上云首选,华为云全新云服务器S6性能评测分析
转: 中小企业上云首选,华为云全新云服务器S6性能评测分析 [小宅按]今天,华为云全新弹性云服务器ECS通用计算型云服务器S6(以下简称为"华为云S6云服务器")正式发布,至顶网云 ...
- JavaScript offset、client、scroll家族
offsetParent <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- [源码分析] 消息队列 Kombu 之 Consumer
[源码分析] 消息队列 Kombu 之 Consumer 目录 [源码分析] 消息队列 Kombu 之 Consumer 0x00 摘要 0x01 综述功能 0x02 示例代码 0x03 定义 3.1 ...
- 优秀的vue服务端渲染框架
目前国内优秀的基于vue的ssr框架有minissr,可以在服务端生成html代码,有利于搜索引擎爬取. https://www.wechatmini.com/vue/minissr 使用方法可以参考 ...
- innerHTML,innerText
文本替换 <p id="p1">Hello World!</p><div>神经</div><h3 class="hh ...
- linux云服务搭建Minecraft服务器
1 准备工作 以下内容全部要在root用户内完成 1.1 安装文件传输工具 为了方便传文件到服务器上,这里先装一个远程传输工具. yum -y install lrzsz 1.2 安装java Min ...
- dex、apk完整性校验
对Dex进行完整性的检查,可通过CRC,或者Hash值.可将校验值放到String资源文件里,或者放到服务器中. 在代码中完成校验值对比逻辑,此部分代码后续不能再改变,否则CRC值会发生变化: 从生成 ...