工程管理
会员登陆可自行发布信息
首页资讯供应求购招商招聘展会社区
长期信息合作请联系:QQ66821730
机电之家工程首页 ---->工程管理工程技术工程案例工程论文 工程招聘 ┊ 行业培训资料下载
应急预案
我 要 找
标题 内容 作者
工程管理技术资料订阅工程管理资料信息
电工技术资料 您的位置: 机电之家-->工程管理资料栏目首页-> 工程论文 -> 软件工程论文 --> C#使用ApplicationBase模型显示Splash Screen
阅读工程管理资料相关资料
C#使用ApplicationBase模型显示Splash Screen
本文作者 未知 摘自 机电之家

我已经介绍过如何在C#中使用Visual Basic的My.Application模型,但是我没有突出用了他之后有什么比原本C#使用的方式更好的地方。所以我将追加几篇帖子,让C#程序员进一步了解采用这种新Application模型的优点。

显示Splash Screen是现代软件常用的手段,显示一个多彩缤纷的Splash Screen可以让应用程序启动的感觉速度加快。但是如何显示Splash Screen呢,首先这个窗口必须先于主窗体出现,而且必须在主窗体初始化完毕以后消失。这个对老手不成问题,但是对于新手,往往无法控制窗体前后显示的问题,导致产生出很多不“地道”的解决方式。现在,如果你用了ApplicationBase模型,就可以很容易地实现一个Splash Screen的最佳模式。(对于Visual Basic程序员,此功能只需要在IDE中选择即可,无需编码)

首先准备你的主窗体和Splash Screen窗体,假设主窗体是Form1而Splash Screen是Form2。你需要继承System.Windows.Forms.WindowsFormsApplicationBase类:

class MyApplication : System.Windows.Forms.WindowsFormsApplicationBase
{
    public MyApplication() : base(AuthenticationMode.Windows)
    {
        EnableVisualStyles = true;
        ShutdownStyle = ShutdownMode.AfterMainFormCloses;
    }


    protected override void OnCreateMainForm()
    {
        MainForm = new Form1();
    }


    protected override void OnCreateSplashScreen()
    {
        SplashScreen = new Form2();
    }


}

非常简单,只需要重写两个方法——OnCreateMainForm和OnCreateSplashScreen方法,分别指定主窗体和Splash Screen窗体即可。接下来我们创建MyApplication类的默认实例,按照惯例使用My作类名:

static class My
{
    private static MyApplication _app;
    private static object _appSyncRoot = new object();

    public static MyApplication Application
    {
        get {
            if (_app == null)
            {
                lock (_appSyncRoot)
                {
                    if (_app == null)
                    {
                        _app = new MyApplication();
                    }
                }
            }
            return _app;
        }
    }
}

最后修改Main方法,将其中原来所有的Application类方法调用的语句全部去掉,改为My.Application.Run(),如下:

[STAThread]
static void Main()
{
    // Application.EnableVisualStyles();
    // Application.EnableRTLMirroring();
    // Application.Run(new Form1());

    My.Application.Run();
}

现在只要直接运行你的程序,就可以看到Splash Screen在工作了。嗯?好像太快看不清?这是因为你的主窗体初始化太快了。这个Splash Screen只在主窗体初始化的过程中才显示。为了增加Splash Screen显示的时间,我们可以人为增加主窗体初始化时间。只要在主窗体的构造函数中添加一些延时即可:

public Form1()
{
    InitializeComponent();

    //延时以增加Splash Screen的显示时间
    System.Threading.Thread.Sleep(1000);
}

其实若主窗体显示速度很快,本身就不用Splash Screen,只有当主窗体需要进行复杂的初始化时,才需要显示Splash Screen来加快“心理速度”。此外,如果你在运行程序的时候加了/nosplash或者-nosplash参数的话,Splash Screen就不会显示,十分体贴的设计吧。

 

另注:System.Windows.Forms.WindowsFormsApplicationBase这个类在Microsoft.VisualBasic.dll中!要使用先引用

 

雪宇军品
Google
·工程项目经理培训
·欧姆龙PLC编程维护培训
·杭州西门子PLC应用培训
·模具加工设计培训
·变频器维修培训
·安全员认证培训
·电工培训


·招聘项目管理人员
·首席技术执行官
·自控工程师
·数控编程学徒
·总工程师


项目竞标

最新商业情报

代理
[代理] 寻求地区代理
[代理] 电工产品诚招代理..
采购
[采购] 电动车控制器外壳
[采购] 高品质缓冲器
 C#使用ApplicationBase模型显示Splash Screen相关资料
  • 重庆轻轨盖梁锚箱支座施工技术
  • R=P×C法评价水下盾构隧道施工风险
  • 上海城市交通隧道盾构施工技术综述
  • M8线翔殷路车站大型端头井施工技术
  • 明珠线二期宜山路车站标准段基坑施工技术
  • 含氰基高性能聚芳醚材料的合成与表征
  • 型钢混凝土结构抗震性态水平和容许变形值的研究
  • 纳米CeO2/Zn金属基复合材料在锌镀层中的应用
  • 高级项目管理之量化管理
  • 浅谈项目管理过程中的水平沟通
  • ⊕这地方投资政策最优
    ⊕上千份机电行业研究报告
    ⊕机电项目招商啦
    ⊕谁把我买了?
    ⊕机电行业展会大全
    ⊕十万企业抢登行业网址大全
    机电之家会议开通
    ⊕每日最新求购信息
    ⊕电工技术资料为了谁?
    ⊕机电设备维修与管理
    机电之家(中国)工程管理技术资料中心资讯版权声明:
    1、凡注明“机电之家采编”字样的所有作品均系本网原创,版权归机电之家所有,任何媒体摘编或享用本作品,需注明文章来源。违反声明者,本网将追究其相关法律责任。
    2、凡本网注明“来源:XXX网(非本网)”的作品,均转载自其他媒体,目的在于传达更多资讯,本网不承担相关法律责任。

    3、如在资讯、广告等方面想与本网合作,请致电:0571-87774297。Email:donemi@hz.cn

    首页
    首页
    合作网站:
    | 中国机电网机电之家安全生产网 | 机电论文 | 机电论坛 | 机电设备贸易 | 机电网址大全 | 浙江机电网 | 陕西机电网 | 单片机技术网 |
    电工园地 | 工程管理网 |环球会展网机电产品网 | 机电人才网 | 中国工控网 | 五金工具网 | 安全生产网 | 商业情报站 | 图纸资料下载 |
    友情连接:
    | 中国机电网 |中国工控网 | 行业培训网 | 中国工程机械网 | 机电一体化网 | 行业下载网 | PLC技术网 | 变频器技术网 |
    关于我们 | 联系我们 | 广告联系 | 付款方式 | 使用帮助 | 工程管理网 | 会员助手 | 友情链接
    电话:0571-87774297(杭州) 传真:0571-87774298(杭州)点击这里给我发消息66821730(技术) 点击这里给我发消息58733127(审核)
    机电之家 工程管理网所共享的
    工程管理,合同与档案管理,质量与成本管理,进度管理,风险管理,施工与现场管理,工程监理,
    项目管理知识,竣工验收管理,工程技术,工程施工方案,施工工艺流程,施工技术方法,工程施工设计,工程案例,
    成功工程案例,失败工程案例,工程论文,软件工程论文,工程项目管理论文,工程造价论文,工程材料论文工程,
    监理论文,工业工程论文,等都是来自会员发表或 网上收集发表。如果有任何侵犯您权益的地方,
    请联系我们,我们将马上进行处理。
    企业登陆可自行免费发布资料,本站代发布邮箱为88ctv@163.com
    Copyright 2007 diangong.jdzj.com Inc All Rights Reserved.工程管理网
    技术支持:杭州滨兴科技有限公司 mailto:88ctv@163.com
    免费发布信息主办:浙江-杭州-工程管理网网络运营部安全生产