• 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。

  • 相关阅读:
    Ubuntu 制作run安装包 依赖mono开发的软件 半自动安装包
    Windows C# to Linux Mono
    Ubuntu 18.04 操作简记
    Ubuntu 安装 Qt 简记
    Visual Studio操作记录
    WinForm项目中使用Xaml资源字典
    加载大量控件
    executable file and DLL
    微信小程序IOS系统兼容 Date.parse() 时间字符串转时间戳
    谷歌浏览器禁用 页面js
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/3114859.html
Copyright © 2020-2023  润新知