zoukankan      html  css  js  c++  java
  • winform添加闪屏

    在网上抄了两个例子

    闪屏说白了就是跟web上面的loading一样的效果。在第一个窗体跳到第二个窗体之间添加一个中间窗体进行过度,等第二个窗体加载完成后中间这个窗体才关闭掉。

    例一:

    中间窗体: LoadingForm

    namespace LoadingFormApp

    {

        public partial class LoadingForm : Form

        {

            private static LoadingForm loadingForm = null;

     

            public LoadingForm()

            {

                InitializeComponent();

            }

     

            /// <summary>

            /// 显?示º?窗ä¡ã体¬?

            /// </summary>

            public new static void Show()

            {

                object syncLock = new object();

                lock (syncLock)

                {

                    loadingForm = new LoadingForm();

                    loadingForm.ShowDialog();

                }

            }

        }

    }

    主窗体:

    namespace LoadingFormApp

    {

        public partial class MainForm : Form

        {

            public MainForm()

            {

                InitializeComponent();

                // 注Á¡é册¨¢闪¦¨¢屏¨¢(ꡧ等̨¨待äy窗ä¡ã体¬?)ê?

                RegisterLoadingForm();

            }

     

            private void RegisterLoadingForm()

            {

                Thread thread = new Thread(new ThreadStart(LoadingForm.Show));

                thread.Start();

     

                // 主¡Â界?面?加¨®载?初?始º?化¡¥...

                LoadMainForm();

     

                thread.Abort();

                thread.Join();

            }

     

            public void LoadMainForm()

            {

                Thread.Sleep(2000);

            }

        }

    }

    例二:

    中间窗体

    namespace LoadingFormDemo2

    {

        public partial class LoadingForm : Form

        {

            private static LoadingForm loadingForm = null;

     

            public LoadingForm()

            {

                InitializeComponent();

            }

     

            public static void ShowForm()

            {

                if (null == loadingForm || true == loadingForm.IsDisposed)

                    loadingForm = new LoadingForm();

     

                loadingForm.Refresh();

                loadingForm.ShowDialog();

            }

     

            public static void CloseForm()

            {

                if (null != loadingForm && false == loadingForm.IsDisposed)

                {

                    loadingForm.Refresh();

                    System.Threading.Thread.Sleep(1000);

                    loadingForm.Dispose();

                }

            }

        }

    }

    主窗体

    namespace LoadingFormDemo2

    {

        public partial class MainForm : Form

        {

            public MainForm()

            {

                InitializeComponent();

            }

     

            private void OnMainFormLoad(object sender, EventArgs e)

            {

                backgroundWorker1.RunWorkerAsync();

                LoadingForm.ShowForm();

            }

     

            private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)

            {

                //程¨¬序¨°处ä|理¤¨ª,ê?加¨®载?数ºy据Y代䨲码?...

                System.Threading.Thread.Sleep(5000);

            }

     

            private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)

            {

                LoadingForm.CloseForm();

            }

        }

    }

     

    这里有个小知识点:public new static void Show()

    如果不加new也是可以,只是系统会提示如果是有意隐藏,请使用关键字new

     C#
    override重写,是指对父类中的虚方法(标记virtual)或抽象方法(标记为abstract)进行重写,实现新的功能,它必须与父类方法的签名完全一致,而且与父类方法的可访问性也必须一致 。
    new隐藏,是指在子类中重新定义一个签名与父类的方法相同的方法,这个方法可以不用new修饰,只是编译时会弹出一个警告信息:如果是有意隐藏,请使用关键字new。

  • 相关阅读:
    NIO的组成有哪些——奈学
    奈学:一起了解几种序列化协议
    NameNode和SecondaryNameNode工作机制
    Django框架,Flask框架和Tornado框架各有什么优缺点
    Gossip 协议详解
    OOP面向对象编程(Object-Oriented Programming)概述
    Redis基础:redis特点
    SQL分类
    sql 存储过程笔记2
    sql 存储过程笔记
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/3114859.html
Copyright © 2011-2022 走看看