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();
}
}
查看全文
相关阅读:
ZOJ2913Bus Pass(BFS+set)
HDU1242 Rescue(BFS+优先队列)
转(havel 算法)
ZOJ3761(并查集+树的遍历)
ZOJ3578(Matrix)
HDU1505
ZOJ3574(归并排序求逆数对)
VUE-脚手架搭建
VUE脚手架搭建
VUE-node.js
原文地址:https://www.cnblogs.com/hcfalan/p/502730.html
最新文章
查看MySql数据库物理文件存放位置
IDEA打开项目时,java文件左下角J图标的问题
zookeeper集群配置
对称加密和非对称加密的区别
maven-pom文件的scope作用域
java中日志打印
git merge 及 git rebase的区别
数据库中的事务介绍
1. 写出一个能创建多级目录的 PHP 函数(新浪网技术部)
MySQL子查询
热门文章
MySQL右连接
MySQL左连接查询
MySQL内连接查询
linux命令之面试题1
MySQL的语法高级之SELECT
MySQL的limit子句
MySQL的order by子句
POJ1094 Sorting It All Out(拓扑排序)
HDU5137 How Many Maos Does the Guanxi Worth(枚举+dijkstra)
POJ3268 Silver Cow Party(dijkstra+矩阵转置)
Copyright © 2011-2022 走看看