WinForm界面开发之"SplashScreen控件"

我们在开发桌面应用程序的时候,由于程序启动比较慢,往往为了提高用户的体验,增加一个闪屏,也就是SplashScreen,好处有:1、让用户看到加载的过程,提高程序的交互响应;2.可以简短展示或者介绍程序的功能或者展示Logo,给客户较深的印象。

本人在开发的共享软件中,对于启动比较慢的程序,也倾向于引入这个控件来展示下,先看看软件启动的时候的效果

 

中间的那些文字“正在展示相关的内容”可以根据加载的进度显示不同的内容,当然最好简单扼要了,其他的内容你也可以视需要做相应变化,因为这个是一个Form,你想改变什么就改变什么的。

看看闪屏代码如何使用先,首先我们在入口的Main函数中开始,看看代码就知道

    public class Portal
    {
        public static GlobalControl gc = new GlobalControl();

        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        private static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //登陆界面
              Logon dlg = new Logon();
            dlg.StartPosition = FormStartPosition.CenterScreen;
            if (DialogResult.OK == dlg.ShowDialog())
            {
                if (dlg.bLogin)
                {
                    SplashScreen.Splasher.Show(typeof(SplashScreen.frmSplash));

                    gc.MainDialog = new MainForm();
                    gc.MainDialog.StartPosition = FormStartPosition.CenterScreen;

                    Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
                    Application.Run(gc.MainDialog);
                }
                
            }
            dlg.Dispose();
        }

        private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs ex)
        {
            LogHelper.Error(ex.Exception);

            string message = string.Format("{0}\r\n操作发生错误,您需要退出系统么?", ex.Exception.Message);
            if (DialogResult.Yes == MessageUtil.ShowYesNoAndError(message))
            {
                Application.Exit();
            }
        }
    }

上面中最关键的代码是:SplashScreen.Splasher.Show(typeof(SplashScreen.frmSplash));
之所以贴出全部的代码,也是供大家参考如何启动登陆窗口并运行主窗体程序的,上面的GlobalControl类是一个公共类,用来放置一些全局变量或者通用操作的函数。Application_ThreadException是用来在程序运行出错的时候,友好提示一下用户,是否退出,否则有一些莫名其妙的错误,程序没有提示就马上退出的问题,扯远了,言归正传,还是说说如何使用闪屏的功能吧。

上面开启了闪屏的功能后,那么我们可能就要在程序中,根据不同的加载进度显示不同的内容了,看看是如何做到的

记得在MainForm窗体的构造函数中添加相应的闪屏操作代码,如下所示。

        public MainForm()
        {
            InitializeComponent();

            SplashScreen.Splasher.Status = "正在展示相关的内容";
            System.Threading.Thread.Sleep(100);

            ..//此处省略部分加载耗时的代码

            SplashScreen.Splasher.Status = "初始化完毕";
            System.Threading.Thread.Sleep(50);

            SplashScreen.Splasher.Close();
        }

控件的使用代码就这么多了,其他的就是封装好的控件部分内容了,下面打包放上来,给大家参考使用,源码级的哦,下载了记得顶一下。

提示:控件的背景图片可能不能正常显示,您自己弄一个图片附上去就可以了。

http://files.cnblogs.com/wuhuacong/SplashScreen.rar

本文转自博客园伍华聪的博客,原文链接:WinForm界面开发之"SplashScreen控件",如需转载请自行联系原博主。

时间: 2024-11-03 19:28:53

WinForm界面开发之"SplashScreen控件"的相关文章

WinForm界面开发之布局控件&quot;WeifenLuo.WinFormsUI.Docking&quot;的使用

本篇介绍Winform程序开发中的布局界面的设计,介绍如何在我的共享软件中使用布局控件"WeifenLuo.WinFormsUI.Docking". 布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的.先看看控件使用的程序界面展示效果. 配电网络可视化管理系统的界面截图: 深田之星送水管理系统网络版的界面截图: 我在几个共享软件都使用了该布局控

WinForm界面开发之“分页控件”

在程序中,分页总是永远的话题,因为数据总是很多很多,分页展示在程序性能和数据查看感官方面得到很好的平衡,是一种良好的编程习惯和UI设计. Winform中的分页控件可能没有Asp.net世界中的分页控件那么丰富多彩,不过也有不少的分页控件可以采用,各个人的可能都有一些不同的东西,一些好的东西.就我而言,我希望控件能够尽可能的多一些功能,耦合性低一些,例如我不想是基于存储过程的,因为我很多程序需要使用Access作为数据库,一般来说,我还希望有导出Excel数据的功能,还有打印预览功能,由于我的数

使用线程刷新界面的系统时间控件。

问题描述 我是新手,我有个疑问:如何使用线程,刷新winform界面的系统时间控件.例如label.text像这种长时间刷新,并且是1000毫秒刷新一次的,Timer和线程哪个更好?下面的虽然精简,可是没有注释,还希望高手能把用到的函数拆开,并且注释一下.感激不尽.privatevoidFrm_Load(objectsender,EventArgse){Threadt=newThread(delegate(){while(this.IsHandleCreated){Invoke(newEvent

Winform开发框架之HTML编辑控件

我们知道,在做Web开发的时候,很多控件可以用来做HTML内容编辑的,Winform开发就相对少很多,不过很多时候,我们在做Winform开发的时候,也是需要处理这样的场景的.例如发送HTML邮件内容的时候,在给客户编写内容丰富的反馈意见或者邮件的时候等等,因此有必要做一个支持好HTML格式,支持图片插入等丰富内容的控件. 本文就是介绍这么一个控件,这个控件增加了一些常见HTML格式的工具栏操作,并且改良支持Win7系统下的内容编辑(一般WebBrowser包装类,在Win7下内容会变得不可编辑

Winform传统DataGridView和DevExpress控件的GridControl两者表头全选功能的实现

在开发一个个人项目的时候,有客户反映默认GridView多选操作不是很方便和理想,想在列表的左边增加一列可以勾选,并且最好支持列表头部全选的操作,否则数据多的时候一个个勾选要到天荒地老. 基于以上需求,找了不少例子进行比较,并对代码进行测试改进,终于完成了以上的功能了, 并且由于我本身做了多套界面的处理,因此,基于传统的DataGridView全选操作不能少,而且基于DevExpress控件的GridView全选操作也应该支持,呵呵. 无图无真相,下面先上图介绍两种不同的效果,然后在详细介绍代码

Android开发中include控件用法分析_Android

本文实例讲述了Android开发中include控件用法.分享给大家供大家参考,具体如下: 我们知道,基于Android系统的应用程序的开发,界面设计是非常重要的,它关系着用户体验的好坏.一个好的界面设计,不是用一个xml布局就可以搞定的.当一个activity中的控件非常多的时候,所有的布局文件都放在一个xml文件中,很容易想象那是多么糟糕的事情!笔者通过自身的经历,用include控件来解决这个问题,下面是一个小例子,仅仅实现的是布局,没有响应代码的设计. user.xml文件内容如下: <

Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全

原文:Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全 前面简单学习了一些Android UI的一些基础知识,那么接下来我们一起来详细学习Android的UI界面基本组件.     一.认识TextView 我们知道前面学习的HelloWorld应用程序中就是使用的TextView来显示一个文本,接下来首先一起来学习TextView的使用方法. TextView的作用就是在界面上显示文本.TextView直接继承了 View,是EditText.Bu

winform如何使用GMAP.net控件 在地图画圆

问题描述 winform如何使用GMAP.net控件 在地图画圆 winform如何使用GMAP.net控件 在地图画圆,在线等教.... 解决方案 Winform 下的地图开发控件(GMap.NET)使用心得Winform下的地图开发控件(GMap.NET)使用心得----------------------

【Win 10应用开发】SplitView控件

原文:[Win 10应用开发]SplitView控件 SplitView控件用于呈现分隔视图,简单地说,就是把一个视图分割为两部分,Content属性所表示的为主要视图,而Pane属性设置的视图则可以隐藏,可以折叠和展开. 估计文字是不太容易介绍这个控件的,还是用实例来说明吧,老周平生最爱实例,最BS枯燥的理论的. 先看XAML代码: <SplitView x:Name="splitView" OpenPaneLength="150" CompactPaneL