C#完全加载WinForm而不显示它(VS2010)

时间:2013-06-07 15:56:20

标签: c# visual-studio-2010 asynchronous devexpress devexpress-windows-ui

使用DevExpress 2012 vol 2.10 C#在VS 2010之上

第一个问题似乎不清楚...... 所以让我们清楚一下(或者至少尝试一下)!

我们正在使用包含许多按钮的功能区构建MainForm。功能区中的每个按钮都被禁用,直到它们各自的状态为“准备启用”。 “准备启用”取决于一件事:与按钮关联的WinForm_Popup已经完全构建,包括数据检索和DevExpress.ExpressApp.ListView构造。

  1. 从数据库中检索数据的时间不到0.1秒
  2. 调用WinForm_Popup.Show()超过15秒
  3. 我们试图把它放在一个线程或一个任务中,没有成功:它在WinForm_Popup.Show()上崩溃,并且有一个与DragDrop事件有关的异常。

    我现在所知道的是,Show()方法需要很长时间,但是我不知道在这个方法中发生了什么,但构建了DevExpress.ExpressApp.ListView,它应该从Show中取走(或者做它可能在任务或Thred中。)

    或者,换句话说,将WinForm_Popup UI完全构建为显示时,但是异步执行(例如,在单独的任务中)。

    任何想法,建议,帮助,链接,建议,提示......任何“事物”?

2 个答案:

答案 0 :(得分:1)

制作新表单并将其设为空。在program.cs文件中,将主窗体更改为新窗体。然后使新的表单构造函数如下:

public newForm()
        {
            this.Hide();
            Thread backTh = new Thread(() =>
                {
                    MainForm mf = new MainForm();
                    mf.Show();
                });
            backTh.Start();
        }

答案 1 :(得分:0)

我会采用相反的方法,通常用于像网络浏览器这样的慢速加载系统。为什么不快速加载表单,然后使用线程填充缓慢加载的网格视图?

这样,你可以像旋转沙漏(或更少的1995年),告诉你的用户数据正在加载。