有什么办法可以在Winforms中暂停所有UI Update命令吗?
或者我有一种轻微的感觉,我试图以完全错误的方式解决这个问题,所以还有另一种解决我问题的方法:我基本上加载一个控件的保存状态,它会在其上加载新的控件。但是我在UI线程中执行了一些操作,并从另一个线程加载了一些数据,然后填充了UI。
因此,加载时的效果是用户可以看到一些控件出现在一个位置,然后移动到窗体上的另一个位置,更改值等。
我想要一个加载屏幕而不是这个并在后台加载控件。这是一个相当大的应用程序,它并不重要,所以重新设计我的代码并不是一个真正的选择。
我可以在方法执行时简单地停止控件上的所有Update()命令吗?
答案 0 :(得分:14)
您可以使用SuspendLayout和ResumeLayout方法在一次操作中包装UI设置(无需更新渲染)。
基本上(假设SomeMethod
在表单类中):
private void SomeMethod()
{
this.SuspendLayout();
// all UI setup
this.ResumeLayout();
}
答案 1 :(得分:4)
这实际上取决于您的表单逻辑,一般情况下,您不应该使用过多的内容来重载Load
或Show
方法,以便可以快速显示和绘制表单,并始终保持响应。< / p>
在某些情况下,它可以帮助使用SuspendLayout和ResumeLayout方法,请参见此处: Control.SuspendLayout Method