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();
}
}
查看全文
相关阅读:
Android Intent 教程
ios 获取手机信息(UIDevice、NSBundle、NSLocale)
[实时渲染] 2.3 几何处理阶段
腾讯2016实习生面试经验(已经拿到offer)
Swift编程语言学习6—— 闭包
head first c<11>初探网络编程上
APM2.8 Rover 自己主动巡航车设计(固件安装和设置)
关于java中String的一点理解
又一次认识java(一) ---- 万物皆对象
Linux启动Oracle监听和服务
原文地址:https://www.cnblogs.com/hcfalan/p/502730.html
最新文章
delphi 自定义内存管理
xmodmap使用指南
Debian 7 安装配置总结
Linux中文乱码问题终极解决方法
XE8 FMX SpeedButton 大图标(改 Style)
较详细的介绍JNI
delphi 调用 java
phpstorm不安装apache就可以本地测试PHP
windows环境phpstorm调试环境搭建
vCenter环境下基于open-e+seafile构建高可用企业云盘
热门文章
centos7安装telnet服务
redis 安装启动及设置密码<windows>
ubuntu下postgreSQL安装配置
PostgreSQL 列出所有表名和数据库名, 删除session被占用的数据库
Monitoring and Managing Tomcat
手把手教你如何安装Pycharm——靠谱的Pycharm安装详细教程
zabbix
监控宝自定义监控
Linux下apache支持PHP配置
5.9 enum--支持枚举类型
Copyright © 2011-2022 走看看