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所说,正确的方法是使用线程。