我有和应用程序窗口形成.net和我的Form1上花费大量的时间出现,因为在它的事件form1_Load
做了很多工作。
我的目标是显示图像的同时操作被完成。
private void form1_Load(object sender, EventArgs e)
{
methode1();
}
虽然我methode1()工作,我的形式犯规表演,我想在屏幕上显示的图像,而我的methode1()的工作,因为在methode1()工作,没有什么在屏幕上。
我有和应用程序窗口形成.net和我的Form1上花费大量的时间出现,因为在它的事件form1_Load
做了很多工作。
我的目标是显示图像的同时操作被完成。
private void form1_Load(object sender, EventArgs e)
{
methode1();
}
虽然我methode1()工作,我的形式犯规表演,我想在屏幕上显示的图像,而我的methode1()的工作,因为在methode1()工作,没有什么在屏幕上。
所有.NET中的视觉的东西是在形式完成。 您可以通过创建一个小的形式,其中包含模块1()之前,完成模块1()关闭后的图像加载它做到这一点。 略低于..
private void form1_Load(object sender, EventArgs e)
{
Form f = new Form();
f.Size = new Size(400, 10);
f.FormBorderStyle = FormBorderStyle.None;
f.MinimizeBox = false;
f.MaximizeBox = false;
Image im = Image.FromFile(path);
PictureBox pb = new PictureBox();
pb.Dock = DockStyle.Fill;
pb.Image = im;
pb.Location = new Point(5, 5);
f.Controls.Add(pb);
f.Show();
methode1();
f.Close();
}
创建另一种形式,只是为了装,用静态图像,和你的应用程序开始加载之前显示它,之后摧毁它。 总在最前,并采用无边框是这样的事情通常设置。
试试这个代码
using System.Reactive.Linq;
private void RealForm_Load(object sender, EventArgs e)
{
var g = new Splash();
// place in this delegate the call to your time consuming operation
var timeConsumingOperation = Observable.Start(() => Thread.Sleep(5000));
timeConsumingOperation.ObserveOn(this).Subscribe(x =>
{
g.Close();
this.Visible = true;
});
this.Visible = false;
g.ShowDialog();
}
此代码使用微软的Rx到其他很酷的功能中执行在后台线程操作
http://msdn.microsoft.com/en-us/data/gg577609.aspx
为了让这段代码工作,你需要两个参考的NuGet包:接收和Rx Windows窗体
https://nuget.org/packages/Rx-Main/1.0.11226
https://nuget.org/packages/Rx-WinForms/1.0.11226
(闪屏C# - google一下)
这是我刚发现: http://msdn.microsoft.com/en-us/library/aa446493.aspx
如何使用内置的闪屏类?
http://msdn.microsoft.com/en-us/library/system.windows.splashscreen.aspx