Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinForm刷新问题_C#_Winforms - Fatal编程技术网

C# WinForm刷新问题

C# WinForm刷新问题,c#,winforms,C#,Winforms,我有一个可以打开多个表单的程序,当有很多表单时,它们会在打开时级联 当按下按钮时,一些代码运行,表单关闭 可见=假; 杀死僵尸; 这个.关闭, 我的杀手,僵尸;方法运行需要几秒钟,所以我在运行它之前使窗体不可见。我遇到的问题是,即使它是不可见的,它背后的形式也不会刷新,就好像应该不可见的形式仍然是可见的 我尝试在使窗体不可见之前移动窗体,但它仍然存在显示在其后面的窗体顶部的问题 如果你能给我一些关于如何解决这个问题的建议,我将不胜感激 在此之后是否调用Application.DoEvents.V

我有一个可以打开多个表单的程序,当有很多表单时,它们会在打开时级联

当按下按钮时,一些代码运行,表单关闭

可见=假; 杀死僵尸; 这个.关闭,

我的杀手,僵尸;方法运行需要几秒钟,所以我在运行它之前使窗体不可见。我遇到的问题是,即使它是不可见的,它背后的形式也不会刷新,就好像应该不可见的形式仍然是可见的

我尝试在使窗体不可见之前移动窗体,但它仍然存在显示在其后面的窗体顶部的问题


如果你能给我一些关于如何解决这个问题的建议,我将不胜感激

在此之后是否调用Application.DoEvents.Visible=false


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

在此之后是否调用Application.DoEvents.Visible=false

this.Visible = false; 
MethodInvoker mk = delegate {
Kill.Zombies(); this.Close();
};
mk.BeginInvoke(null,null);
正确的方法是多线程,但是调用DoEvents可能会解决这个问题

this.Visible = false; 
MethodInvoker mk = delegate {
Kill.Zombies(); this.Close();
};
mk.BeginInvoke(null,null);
使用上面的代码


使用上面的代码。

为什么不添加一些代码来显示正确的方法,或者使用ThreadPool或BackgroundWorker?@Daniel:因为这不是问题所在。问题是如何修复显示错误,我回答了。我认为您的解决方案在大多数情况下都会起作用,但有时可能不起作用。就像它会使窗体隐形100次,但不是101次。正如@Daniel所说的,正确的方法是使用线程。为什么不添加一些代码来显示正确的方法,或者使用线程池或后台工作人员?@Daniel:因为这不是问题所在。问题是如何修复显示错误,我回答了。我认为您的解决方案在大多数情况下都会起作用,但有时可能不起作用。就像它会使窗体隐形100次,但不是101次。正如@Daniel所说,正确的方法是使用线程。