当前位置:编程学习 > C#/ASP.NET >>

C#做像PS一样的有加载数据的欢迎界面

怎么做像PS欢迎界面有加载数据的啊,简单的说,就是把加载界面设计代码那里的信息实时显示出来,在那里面直接写text的代码 控件会卡白,根本没效果,怎么用线程实现,求高手说说。要具体点的。 --------------------编程问答-------------------- 多线程+通知。 --------------------编程问答-------------------- 期待代码实例 --------------------编程问答-------------------- 不能沉啊,求高手 --------------------编程问答-------------------- 帮忙顶.....
我也期待实现。。。 --------------------编程问答-------------------- 创建windows application,然后粘贴如下代码替换Program.cs中所有内容。F5可以看到效果。只是例子。看懂后融合到你项目中。

using System;
using System.Threading;
using System.Windows.Forms;

namespace CSharpWin02
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new DemoMainform());
        }

        public class DemoMainform : Form
        {
            
            protected override void OnLoad(EventArgs e)
            {
                base.OnLoad(e);
                this.Text = "Mainform";
                //休眠模拟消耗时间
                SplashForm sf = null;
                bool form_inited = false;
                new Thread((ThreadStart)delegate
                {
                    sf = new SplashForm();
                    sf.HandleCreated += (EventHandler)delegate { form_inited = true; };
                    sf.Show();
                    sf.BringToFront();                    
                    Application.Run(sf);
                }).Start();
                while (sf == null || !form_inited) ;//do nothing until splash form ready                
                sf.Invoke((EventHandler)delegate { sf.UpdateState(LoadingState.LoadingResource); });
                Thread.Sleep(1000);
                sf.Invoke((EventHandler)delegate { sf.UpdateState(LoadingState.LoadingPlugIn); });
                Thread.Sleep(1000);
                sf.Invoke((EventHandler)delegate { sf.UpdateState(LoadingState.LoadingTools); });
                Thread.Sleep(1000);
                sf.Invoke((EventHandler)delegate { sf.UpdateState(LoadingState.LoadingFonts); });
                Thread.Sleep(1000);
                sf.Invoke((EventHandler)delegate { sf.UpdateState(LoadingState.LoadingComplete); });
                Thread.Sleep(1000);
                sf.Invoke((EventHandler)delegate { sf.Close(); });
            }
        }

        //加载状态
        public enum LoadingState
        {
            LoadingResource,
            LoadingPlugIn,
            LoadingTools,
            LoadingFonts,
            LoadingComplete
        }

        public class SplashForm:Form
        {
            public void UpdateState(LoadingState state)
            {
                lt.Text = state.ToString() + "...";
            }
            Label lt = new Label();
            protected override void OnLoad(EventArgs e)
            {
                base.OnLoad(e);
                this.Text = "Loading splash form";
                this.Controls.Add(lt);
                lt.AutoSize = false;
                lt.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
                lt.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom;
                lt.Left = 0;
                lt.Top = 0;
                lt.Width = this.Width;
                lt.Height=this.Height;
                lt.Text = "starting...";                
            }
        }
    }
}
--------------------编程问答-------------------- 回帖有分 --------------------编程问答-------------------- 学习有分 --------------------编程问答--------------------
引用 5 楼 wuyazhe 的回复:
创建windows application,然后粘贴如下代码替换Program.cs中所有内容。F5可以看到效果。只是例子。看懂后融合到你项目中。
C# code

using System;
using System.Threading;
using System.Windows.Forms;

namespace CSharpWin02
{
    static class Progra……


学习了。。。 --------------------编程问答-------------------- 嗯,如5楼一样采用多线程处理就可以实现。 --------------------编程问答-------------------- mark,学习。 --------------------编程问答-------------------- 我是来看5楼的呢
--------------------编程问答-------------------- mark ,learn
--------------------编程问答-------------------- mark,学习 --------------------编程问答-------------------- 这些只是假项

真正的目的应该是加载插件或是Dll文件

你那只能算是闪屏 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 学习 学习 帮顶 --------------------编程问答-------------------- 酱油党飘过,学习中…… --------------------编程问答-------------------- 用多线程吧 --------------------编程问答-------------------- 学习·· --------------------编程问答-------------------- 看看有分  --------------------编程问答--------------------
引用 5 楼 wuyazhe 的回复:
创建windows application,然后粘贴如下代码替换Program.cs中所有内容。F5可以看到效果。只是例子。看懂后融合到你项目中。
C# code

using System;
using System.Threading;
using System.Windows.Forms;

namespace CSharpWin02
{
    static class Progra……

学习啊。。好东西 --------------------编程问答-------------------- 学习学习。。。 --------------------编程问答-------------------- mark 学习
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,