想实现:
Form1上点击一个按钮 ShowDialog一个窗体Form2,Form2加载时间很长,在加载时,弹出一个带进度条的窗体Form3显示,待Form2加载完毕后,关闭Form3,显示Form2;
请各位大虾帮忙,教教我,谢谢!

解决方案 »

  1.   

    Form2 正常显示
    在Form2开始加载的时候 在Form2里开线程 显示Form3
    class Form2
    {
    Form3 f3=new Form3();
    public Form2()
    {
       new Thread(ThreadStart(toShowForm3)).Start();//加载前
    .
    .//f3.prg  //把进度条写成public类型 在里控制进度(value 值)
    .
    f3.Close();//加载结束后
    }
    private void toShowForm3()
    {
      f3.Show();//ShowDialog
    }
    }
      

  2.   

    这段代码里的
     new Thread(ThreadStart(toShowForm3)).Start();//加载前
    改成
     f3.Show()不是一样的吗?
      

  3.   

    当然不一样 如果直接f3.Show()  在f2加载完前f3 是不能响应的改变的
      

  4.   

    我好像范了个 严重错误
    f3.Show()  也行,后面要加句话
    Application.DoEvents();
      

  5.   

    呵呵,谢谢,不过好像这样也有问题,出来的Form3置不了焦点,老是最小化
      

  6.   

    那就用线程吧 不过要反过来写 我写的那个有问题
    f1中 显示f3
    线程处理f2
    f2中控制f3的进度条 与关闭应该这样
      

  7.   

    稍微有点麻烦,主要还是看FORM2的加载是在加载什么,总之线程+委托可以完美解决问题
      

  8.   

    Application.DoEvents();是起什么作用
      

  9.   

    学习,MARK
    cancerser(都是混饭吃,记得要结帖)天天站岗,谢谢 
      

  10.   

    ref:
    http://blog.csdn.net/knight94/archive/2006/05/27/757351.aspx