【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上不 ...
随机推荐
- 阿里巴巴Druid,轻松实现MySQL数据库连接加密!
为什么要加密? 现在的开发习惯,无论是公司的项目还是个人的项目,都会选择将源码上传到 Git 服务器(GitHub.Gitee 或是自建服务器),但只要将源码提交到公网服务器就会存在源码泄漏的风险,而 ...
- double型数据的输入和输出--%f和%lf
scanf函数是通过指针指向变量的. %f告诉scanf函数在所传地址位置上存储一个float型值, 而%lf告诉scanf函数在所传地址位置上存储一个double型值. 这里float和double ...
- LeetCode-祖父节点值为偶数的结点值之和
祖父节点值为偶数的结点值之和 LeetCode-1315 这题稍微难度有点大,但是仔细思考还是可以找到思路的. 因为只需要找到祖父节点这最上两层,所以可以带一个参数记录一下祖父节点是否是偶数,以及父节 ...
- Python3读取网页HTML代码,并保存在本地文件中
旧版Python中urllib模块内有一个urlopen方法可打开网页,但新版python中没有了,新版的urllib模块里面只有4个子模块(error,request,response,parse) ...
- Python深入:setuptools进阶
作者:gqtcgq 来源:CSDN 原文:https://blog.csdn.net/gqtcgq/article/details/49519685 Setuptools是Python Distuti ...
- Python3实现短信轰炸机
短信轰炸机的基本原理:利用某些限制不严格的网站短信注册接口,用Python模拟请求,传入被炸人手机号码,实现轰炸 实现方式:利用requests模块.time模块.完成请求模拟 模块安装: 在终端窗口 ...
- 【Azure Developer】Github Action部署资源(ARM模板)到Azure中国区时,遇见登录问题的解决办法
问题描述 在参考文档"使用 GitHub Actions 部署 ARM 模板"一文中,由于是在中国区Azure上操作,所以生产的部署凭证为中国区凭证.当创建工作流时,在登录到Azu ...
- 3,turicreate入门 - 优化回归模型,使得预测更准确
turicreate入门系列文章目录 1,turicreate入门 - jupyter & turicreate安装 2,turicreate入门 - 一个简单的回归模型 3,turicrea ...
- ls(list)命令详解及生产使用示例
文件有文件名与数据,在linux上被分为两个部分:用户数据(user data)与元数据(metadata) 用户数据,即文件数据块(data block),数据块是记录文件真实内容的地方,我们将其称 ...
- Echarts概述
1. Echarts概述 ECharts是百度开源的纯 Javascript 图表库,目前开源可以与highcharts相匹敌的一个图表库.支持折线图(区域图).柱状图(条状图).散点图(气泡图).K ...