2

我有和应用程序 windows form .net 并且我的 form1 需要很长时间才能出现,因为在它的事件form1_Load中做了很多操作。

我的目标是在操作完成时显示图像。

private void form1_Load(object sender, EventArgs e)
{            
    methode1();
}

当我的 methode1() 工作时,我的表单不显示,我想在我的 methode1() 工作时在屏幕上显示图像,因为当 methode1() 工作时,屏幕上没有任何内容。

4

5 回答 5

2

使用静态图像创建另一个表单,仅用于加载,并在应用程序开始加载之前显示它,然后将其销毁。始终在顶部,并且没有边界是此类事物的通常设置。

于 2012-05-30T19:43:25.533 回答
2

.net 中的所有视觉事物都是在表单上完成的。您可以通过创建一个包含图像的小表单来做到这一点,在 module1() 之前加载它并在完成 module1() 之后关闭它。略低于..

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();
}
于 2012-05-30T19:47:35.637 回答
2

试试这个代码

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();
    }

此代码使用 Microsoft Rx 在后台线程中执行操作以及其他很酷的功能

http://msdn.microsoft.com/en-us/data/gg577609.aspx

为了使此代码正常工作,您需要引用两个 nuget 包:Rx 和 Rx windows 窗体

https://nuget.org/packages/Rx-Main/1.0.11226

https://nuget.org/packages/Rx-WinForms/1.0.11226

于 2012-05-30T20:02:41.717 回答
0

(启动屏幕c#-谷歌它)

这是我刚刚发现的:http: //msdn.microsoft.com/en-us/library/aa446493.aspx

于 2012-05-30T19:45:10.770 回答
0

使用内置的 SplashScreen 类怎么样?

http://msdn.microsoft.com/en-us/library/system.windows.splashscreen.aspx

于 2012-05-30T19:45:53.927 回答