日期:2014-05-18  浏览次数:20743 次

再次抱着试一试的心态来问一个问题、C# 关于加载窗体、、
呃、、这个 加载 不是 show 那个 、、 而是在那个窗体还没有显示的时候就让那个窗体把窗体里面的数据初始化好
不然 打开这个窗体的时候再来初始化这个窗体 那就悲剧了 等个一两秒窗体才能初始化好、、
貌似 以前用vb6.0的时候 都有 Load Form 来加载一个窗体、、
现在 我是在主程序的load事件里面 Form2.Show();Form2.Hide();
怎么看怎么不是滋味

------解决方案--------------------
探讨

引用:
你load之前不用new一个窗体实例么?


是 new 了一个啊 可是 new了一个 窗体里面的一些信息呢 ?、、
窗体加载的时候 要等两秒后才能搞定、、所以 我想在窗体 显示之前就把数据加载好、、然后显示窗体的时候就不会卡了 、、

------解决方案--------------------
探讨
是 new 了一个啊 可是 new了一个 窗体里面的一些信息呢 ?、、
窗体加载的时候 要等两秒后才能搞定、、所以 我想在窗体 显示之前就把数据加载好、、然后显示窗体的时候就不会卡了 、、

------解决方案--------------------
另外假设你总是new之后立刻load,那么显然没有任何想当然的办法去“提前”加载什么东西。因为你连new也是刚刚进行的。

那么此时load时就不应该去加载什么东西,load的时候就应该仅仅显示一个初始界面,而最终的界面内容是(在初始化或者load中)异步加载的。所谓异步加载,最简单地你可以使用非常傻瓜化的backgroundworker控件。
------解决方案--------------------
额。。
C# code
新建3个窗体from1(加载界面) ,form2主界面 ,form3字界面
在Program中先new form2
static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
         form2 fm = new form2()
form1 fm1 = new form1()
if(fm1.ShowDialog() == DialogResult.OK)
{
     Application.Run(fm);
}
}