我想要的是这样一个窗体,要它显示的时候就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,请问大家有什么方法吗?
谢谢!
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,请问大家有什么方法吗?
谢谢!
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();});
}
有源代码可以下载,但是必须先用电子邮件地址,注册为codeproject网站的用户运行效果图:
思路提示:跨线程访问控件,处理后台任务时,显示一个窗体,这个窗体上用进度条显示进度,这个进度的值由后台线程去更新。
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();});
}