Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# 我可以在加载表单时冻结UI呈现吗?_C#_Winforms - Fatal编程技术网

C# 我可以在加载表单时冻结UI呈现吗?

C# 我可以在加载表单时冻结UI呈现吗?,c#,winforms,C#,Winforms,有没有办法暂停Winforms中的所有UI更新命令 或者我有一种轻微的感觉,我试图以完全错误的方式来处理这个问题,那么有没有另一种方法来解决我的问题:我基本上加载控件的一个保存状态,这会加载整个控件的新控件。但是,我在UI线程中执行了一些操作,并从另一个线程加载了一些数据,这些数据随后填充UI 因此,当它加载时,我的效果是用户可以看到一些控件出现在一个地方,然后移动到表单上的另一个地方,更改值,等等 我希望得到一个加载屏幕而不是这个,并在后台加载控件。它是一个相当大的应用程序,并且没有那么重要,

有没有办法暂停Winforms中的所有UI更新命令

或者我有一种轻微的感觉,我试图以完全错误的方式来处理这个问题,那么有没有另一种方法来解决我的问题:我基本上加载控件的一个保存状态,这会加载整个控件的新控件。但是,我在UI线程中执行了一些操作,并从另一个线程加载了一些数据,这些数据随后填充UI

因此,当它加载时,我的效果是用户可以看到一些控件出现在一个地方,然后移动到表单上的另一个地方,更改值,等等

我希望得到一个加载屏幕而不是这个,并在后台加载控件。它是一个相当大的应用程序,并且没有那么重要,所以重新设计我的代码并不是一个真正的选择

我可以在方法执行时停止控件上的所有Update()命令吗?

您可以使用和方法在一个操作中包装UI的设置(无需更新渲染)

基本上(假设
SomeMethod
在form类中):


这实际上取决于您的表单逻辑,一般来说,您不应该用太多的内容重载
Load
Show
方法,以便快速显示和绘制表单,并始终保持响应性

在某些情况下,使用SuspendLayout和ResumeLayout方法可能会有所帮助,请参见此处:

我的建议-在呈现表单时不要显示表单。若你们冻结用户界面,那个么用户可以看到空表单,过了一段时间,所有的控件都会弹出。那个很好,很抱歉我并没有解释这一点。默认表单包含此控件的空白版本,然后用户可以拖动控件并选择某些选项、添加新控件等,然后将控件的状态保存为XML。这个问题是关于当用户决定打开一个现有的文件时。太棒了,我知道这很简单,我只是在谷歌上搜索错误的东西。非常感谢。不幸的是,当窗体已经可见时,它不起作用。有一个更好的方法:它不在负载上。控件加载最初是在设计器代码中进行的,它加载一个空白控件。但是控件上有一个LoadData方法,它在提示用户打开文件后从XML文件加载表单状态。
private void SomeMethod()
{
    this.SuspendLayout();
    // all UI setup
    this.ResumeLayout();
}