应急预案
我 要 找
标题 内容 作者
工程管理技术资料订阅工程管理资料信息
C#使用ApplicationBase模型显示Splash Screen-机电之家网工程管理网
当前位置:机电之家-->工程管理资料栏目首页-> 工程论文 -> 软件工程论文 --> 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中!要使用先引用

 

作者:未知 点击:[打印] [关闭] [返回顶部]
本文标签:C#使用ApplicationBase模型显示Splash Screen
* 由于无法获得联系方式等原因,本网使用的文字及图片的作品报酬未能及时支付,在此深表歉意,请《C#使用ApplicationBase模型显示Splash Screen》相关权利人与机电之家网取得联系。
电子样本

金泰钢塑复合管
:销售部
:028-7226200
:成都金泰管业有限公司
个人求购

闵华 【求购】  沼气燃烧..  2009-12-23
陈小姐 【求购】  五金配件  2009-12-23
丘双华 【求购】  钢质门  2009-12-23
周雷 【求购】  ACP配电..  2009-12-23
Tom 【求购】  无缝钢管  2009-12-23
冯银燕 【求购】  风机  2009-12-23
陈浩 【求购】  调制解调..  2009-12-23
王士平 【求购】  不锈钢材..  2009-12-23
最新供应

VIP公司推荐