如何优化控件和表单绘制和重绘以提高速度,并消除闪烁?

mal*_*awi -1 .net c# vb.net performance winforms

我正在做一个大项目。我的表单是form1的mdi容器。form1 加载太慢,我可以看到正在绘制的控件。

每个表单都有一个更新方法,但我仍然有同样的问题。我无法使用任务来创建新表单。

这是我的代码

       form1.MdiParent = Me
       form1.Show()
Run Code Online (Sandbox Code Playgroud)

我的表单有超过 40 个控件(文本框、标签、网格视图......),是的,它是重用户界面。是否有任何解决方案可以利用并发技术,例如:任务、异步等待?

Jes*_*las 7

在运行一些测试并查看一些较旧的代码后,我已经能够找到有助于解决此特定问题的内容,您可以尝试将下一个样式添加到您的表单中

public partial class Form1 : Form
{
    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams CP = base.CreateParams;
            CP.ExStyle = CP.ExStyle | 0x02000000; // WS_EX_COMPOSITED
            return CP;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看 WS_EX_COMPOSITED 文档:http : //msdn.microsoft.com/en-us/library/windows/desktop/ff700543( v=vs.85) .aspx

我在一个有 752 个子控件(标签、文本框、数据网格、组合框和列表框)的表单上尝试了这个,但我看不到子控件是如何绘制的,它们只是飞溅到视图中。

VB版本:

Protected Overrides ReadOnly Property CreateParams() As CreateParams
 Get
     Dim cp As CreateParams = MyBase.CreateParams
        cp.ExStyle = cp.ExStyle Or &H02000000 
     Return cp
 End Get
End Property
Run Code Online (Sandbox Code Playgroud)