我想要的是这样一个窗体,要它显示的时候就show,要它关闭就close。这个窗体中有动画效果,以让用户知道要等到而不是假死。
void button1_click(object sender, EventArgs e)
{
     WaitForm wForm = new WaitForm();
     wForm.Show();
     DoSomething();//这个耗时比较长,10秒,不可分解
     wForm.Close();
}但是发现winForm不能做到这一点,因为在Show()的时候,它不会真正显示等utton1_click函数完成后才绘制窗体,但这个时候我已经Close它了。
第三方控件DevExpress的WaitDialogForm可以实现这一点,但是我不能为了一个Form,使用它4M多的dll,请问大家有什么方法吗?
谢谢!

解决方案 »

  1.   

    try:
    void button1_click(object sender, EventArgs e)
    {
    WaitForm wForm;
    new Thread((ThreadStart)delegate

    wForm = new WaitForm();
    Application.Run(wForm);
    }
    DoSomething();//这个耗时比较长,10秒,不可分解
    wForm.Invoke((EventHandler)delegate{wForm.Close();});
    }
      

  2.   

    看这个例子:
    有源代码可以下载,但是必须先用电子邮件地址,注册为codeproject网站的用户运行效果图:
    思路提示:跨线程访问控件,处理后台任务时,显示一个窗体,这个窗体上用进度条显示进度,这个进度的值由后台线程去更新。

      

  3.   

    居然贴少了半句
    void button1_click(object sender, EventArgs e)
    {
    WaitForm wForm;
    new Thread((ThreadStart)delegate

    wForm = new WaitForm();
    Application.Run(wForm);
    }).Start();
    DoSomething();//这个耗时比较长,10秒,不可分解
    wForm.Invoke((EventHandler)delegate{wForm.Close();});
    }
      

  4.   

    请问如何使该窗体显示为模式对话框,这样,主窗体就不能操作了,等DoSomething完成之后才可以使用?