zoukankan
html css js c++ java
Splash Form
对于需要加载很多组件的应用程序来说,在启动的时候会非常的缓慢,可能会让用户误以为程序已经死掉,这显然不是我们希望看到的。如果能够在启动的时候动态的给用户一些反馈信息(比如当前正在加载的项),那么就可以有效的避免这一问题,并且可以给我们的应用程序增色不少。下边的图片是此代码的效果图。
下面是部分代码:
AppStart 类,包含Main方法
public
class
AppStart
{
public
AppStart()
{
}
[STAThread]
static
void
Main(
string
[] args)
{
//
显示Splash窗体
Splash.Show();
DoStartup(args);
//
关闭Splash窗体
Splash.Close();
}
static
void
DoStartup(
string
[] args)
{
//
做需要的事情
frmMain f
=
new
frmMain();
Application.Run(f);
}
}
Splash功能类:
public
class
Splash
{
static
frmSplash MySplashForm
=
null
;
static
Thread MySplashThread
=
null
;
static
void
ShowThread()
{
MySplashForm
=
new
frmSplash();
Application.Run(MySplashForm);
}
static
public
void
Show()
{
if
(MySplashThread
!=
null
)
return
;
MySplashThread
=
new
Thread(
new
ThreadStart(Splash.ShowThread));
MySplashThread.IsBackground
=
true
;
MySplashThread.ApartmentState
=
ApartmentState.STA;
MySplashThread.Start();
}
static
public
void
Close()
{
if
(MySplashThread
==
null
)
return
;
if
(MySplashForm
==
null
)
return
;
try
{
MySplashForm.Invoke(
new
MethodInvoker(MySplashForm.Close));
}
catch
(Exception)
{
}
MySplashThread
=
null
;
MySplashForm
=
null
;
}
static
public
string
Status
{
set
{
if
(MySplashForm
==
null
)
{
return
;
}
MySplashForm.StatusInfo
=
value;
}
get
{
if
(MySplashForm
==
null
)
{
throw
new
InvalidOperationException(
"
Splash Form not on screen
"
);
}
return
MySplashForm.StatusInfo;
}
}
}
Splash 界面类:
public
class
frmSplash : System.Windows.Forms.Form
{
private
string
_StatusInfo
=
""
;
public
frmSplash()
{
InitializeComponent();
}
private
void
InitializeComponent()
{
//
this
.pictureBox1.Image
=
((System.Drawing.Image)(resources.GetObject(
"
pictureBox1.Image
"
)));
//
}
public
string
StatusInfo
{
set
{
_StatusInfo
=
value;
ChangeStatusText();
}
get
{
return
_StatusInfo;
}
}
public
void
ChangeStatusText()
{
try
{
if
(
this
.InvokeRequired)
{
this
.Invoke(
new
MethodInvoker(
this
.ChangeStatusText));
return
;
}
labStatus.Text
=
_StatusInfo;
}
catch
(Exception e)
{
//
异常处理
}
}
}
主界面类:
public
class
frmMain : System.Windows.Forms.Form
{
public
frmMain()
{
InitializeComponent();
Splash.Status
=
"
状态:载入初始化模块
"
;
System.Threading.Thread.Sleep(
1000
);
Splash.Status
=
"
状态:载入管理模块
"
;
System.Threading.Thread.Sleep(
1000
);
Splash.Status
=
"
状态:载入打印模块
"
;
System.Threading.Thread.Sleep(
1000
);
Splash.Status
=
"
状态:载入插件模块
"
;
System.Threading.Thread.Sleep(
1000
);
Splash.Status
=
"
状态:连接数据库
"
;
System.Threading.Thread.Sleep(
1000
);
Splash.Close();
}
}
查看全文
相关阅读:
CDQ
MySQL中的类Decode用法
HTMLTestRunner生成空白resault.html
参数化时按行读取txt文件,如何去掉换行符" "
打开本地html的一些设置
python中文乱码例子
Python异常处理实例
Python根据上下限生成不重复随机数1
Linux自定义命令
Python IDLE 清屏工具
原文地址:https://www.cnblogs.com/hcfalan/p/502730.html
最新文章
阿里云OSS的使用总结
有关小程序开发的问题总结-发布版本及过程中遇到的问题
linux下 java.sql.SQLSyntaxErrorException: In aggregated query without GROUP BY, expression this is incompatible with sql_mode=only_full_group_by解决办法
阿里云ECS遭遇暴力破解如何防御
购买阿里云ECS到部署搭建项目运行环境,jdk,redis,mysql,nginx,域名,及linux命令、遇到的坑大合集~~
mysql 按天统计数据&& 截取日期
windows下 mysql8 安装无my.ini配置文件和执行groupBy报错修改sql_mode不生效的解决方案
checkbox使用总结
前端到后台的上传下载word文档
题目分类
热门文章
博客的目的
题目基本的格式
三分
树上博弈(green)
dsu on tree
线段树合并
线段树
Dijkstra
斜率优化DP
数位DP
Copyright © 2011-2022 走看看