2010-06-30 101 views
1

我有一个程序可以打开多个窗体,当它们有很多窗体打开时,它们会级联。WinForm刷新问题

当按下一个按钮,一些代码运行并窗体关闭

THIS.VISIBLE = FALSE; Kill.Zombies(); this.Close();

My Kill.Zombies();方法需要几秒钟的时间才能运行,所以我在运行之前将表单隐藏起来。我遇到的问题是,即使它看不见,它后面的表单也不会刷新,就好像应该看不见的表单仍然可见。

我尝试在隐藏窗体之前移动窗体,并且仍然存在窗体背后显示的问题。

如果你可以给我一些关于如何解决这个问题的建议,我会很感激。

回答

5

是否在this.Visible = false之后调用Application.DoEvents() ?

正确的做法是多线程的,但是调用DoEvents()可能会修复它。

+0

更新了我的答案,在您发布的同时,哈哈,谢谢 – 2010-06-30 16:21:54

+0

是的,这是正确的答案,我明白问题不对。 – 2010-06-30 16:22:07

+0

为什么不添加一些代码来显示正确的方式(使用'ThreadPool'或'BackgroundWorker')? – 2010-06-30 16:24:26

2
this.Visible = false; 
MethodInvoker mk = delegate { 
Kill.Zombies(); this.Close(); 
}; 
mk.BeginInvoke(null,null); 

使用上面的代码。