C# 我不知道';我不希望表格从上到下逐步绘制。我希望它能一次全部显示出来

C# 我不知道';我不希望表格从上到下逐步绘制。我希望它能一次全部显示出来,c#,.net,winforms,visual-studio,C#,.net,Winforms,Visual Studio,我有一个Windows窗体,在其中我在c#代码中添加了许多链接标签。 我遇到的问题是,当窗体显示时,它会从上到下逐渐淹没在屏幕上。但我希望它突然而迅速地出现。我该怎么办? 我甚至试过这个,但没用: 我将visible设置为false。然后用所有标签填写表格。然后打电话给演出 (我在另一个表单中的标签的鼠标事件中新建()和显示()我的表单。) 编辑:我也试过双缓冲区。没有帮助。 我应该注意,我不在乎整个表单是否延迟出现。我只想让它一下子出现。因为在我的情况下,一点延迟是不可避免的。因为数据是从网络

我有一个Windows窗体,在其中我在c#代码中添加了许多链接标签。 我遇到的问题是,当窗体显示时,它会从上到下逐渐淹没在屏幕上。但我希望它突然而迅速地出现。我该怎么办? 我甚至试过这个,但没用: 我将visible设置为false。然后用所有标签填写表格。然后打电话给演出

(我在另一个表单中的标签的鼠标事件中新建()和显示()我的表单。)

编辑:我也试过双缓冲区。没有帮助。 我应该注意,我不在乎整个表单是否延迟出现。我只想让它一下子出现。因为在我的情况下,一点延迟是不可避免的。因为数据是从网络检索的


提前感谢。

作为猜测,请尝试在表单上设置
DoubleBuffered=true
。这是为了在屏幕上绘制之前将整个表单表面渲染到内存缓冲区。但是,更好的解决方案是找出导致窗体渲染如此缓慢的原因。除非UI线程中出现大量逻辑,否则表单通常是不可察觉的。

作为猜测,请尝试在表单上设置
DoubleBuffered=true
。这是为了在屏幕上绘制之前将整个表单表面渲染到内存缓冲区。但是,更好的解决方案是找出导致窗体渲染如此缓慢的原因。除非UI线程中出现大量逻辑,否则表单通常是不可察觉的。

您需要分析应用程序,可能的原因如下:

  • 加载期间密集的数据填充(可以通过需要可视化的控件数量、要加载或在另一个线程中运行的数据数量来减少)

  • 视图上的控件太多(只需将它们组织在TabControl的不同TabPage中即可。如果控件太多,请避免使用它们,因为没有任何用户需要它们

  • 最后也是最重要的一点:在加载过程中和加载结束时是
    SuspendLayout
    ()/
    resumeloayout
    ()


希望这能有所帮助。

您需要分析您的应用程序,原因可能是:

  • 加载期间密集的数据填充(可以通过需要可视化的控件数量、要加载或在另一个线程中运行的数据数量来减少)

  • 视图上的控件太多(只需将它们组织在TabControl的不同TabPage中即可。如果控件太多,请避免使用它们,因为没有任何用户需要它们

  • 最后也是最重要的一点:在加载过程中和加载结束时是
    SuspendLayout
    ()/
    resumeloayout
    ()

希望这有帮助。

一个想法:

也许可以将所有的
链接标签
放在
面板
上,将
面板
停靠
设置为
填充
,然后将
面板
添加到
表单
一个想法:


也许把你所有的
链接标签
放在
面板上
,将
面板的
停靠
设置为
填充
,然后将
面板
添加到
表单

你试过使用
双缓冲=真
吗?你试过使用
双缓冲=真
吗?我想我的问题是在构造函数中而不是在Load()中检索到数据。我将其从构造函数移到Load()中,并根据您的建议减少了控件的数量。现在好多了。感谢您的快速帮助:)。您需要分析应用程序以确定瓶颈。我只列出了可能导致您出现问题的最常见的故障。您可以使用免费的性能分析工具对其进行测量。@seff:这只是概念,与VS或ctor无关,但像过程一样加载。如果berfore显示某些内容,您需要数据(比如说)从数据库中,将其绑定到所有控件,这将花费时间。也就是说,如果在加载表单期间执行此操作,它的最终呈现外观将自然延迟。很抱歉,Tigran我错了。我认为问题几乎解决了,因为我已将链接标签的数量减少到30个。现在我将其增加到90个链接标签,并且解决了此问题m仍然存在:(我必须显示30行链接标签,每行有3行。@因此尝试应用其他列出的技术,但首先使用探查器进行测量。它很容易使用。我想我的问题是我在构造函数中检索了数据,而不是在Load()中。我将数据从构造函数移到Load()中根据您的建议,我还减少了控件的数量。现在好多了。谢谢您的快速帮助:)。您需要分析应用程序以确定瓶颈。我只列出了可能导致您出现问题的最常见的故障。您可以使用免费的性能分析工具对其进行测量。@seff:这只是概念,与VS或ctor无关,但像过程一样加载。如果berfore显示某些内容,您需要数据(比如说)从数据库中,将其绑定到所有控件,这将花费时间。也就是说,如果在加载表单期间执行此操作,它的最终呈现外观将自然延迟。很抱歉,Tigran我错了。我认为问题几乎解决了,因为我已将链接标签的数量减少到30个。现在我将其增加到90个链接标签,并且解决了此问题m仍然存在:(我必须显示30行链接标签,每行有3行。@因此尝试应用其他列出的技术,但首先使用探查器进行测量。它很容易使用。