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楼一样采用多线程处理就可以实现。 --------------------编程问答-------------------- mark,学习。 --------------------编程问答-------------------- 我是来看5楼的呢
--------------------编程问答-------------------- mark ,learn
--------------------编程问答-------------------- mark,学习 --------------------编程问答-------------------- 这些只是假项
真正的目的应该是加载插件或是Dll文件
你那只能算是闪屏 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 学习 学习 帮顶 --------------------编程问答-------------------- 酱油党飘过,学习中…… --------------------编程问答-------------------- 用多线程吧 --------------------编程问答-------------------- 学习·· --------------------编程问答-------------------- 看看有分 --------------------编程问答--------------------
学习啊。。好东西 --------------------编程问答-------------------- 学习学习。。。 --------------------编程问答-------------------- mark 学习
补充:.NET技术 , C#