【问题标题】:Render winforms controls more smoothly更流畅地渲染 winforms 控件
【发布时间】:2011-01-16 08:53:13
【问题描述】:

我的 winforms 应用程序呈现非常不稳定。有没有一种技术可以用来在屏幕外绘制表单,或者在处理布局之前隐藏它?任何有助于加快表单视觉加载速度的方法。

感谢您的帮助。

编辑:

每个表单都有几个网格,以及大约 20 到 30 个附加控件(文本框/复选框)。所有控件都是第三方的,我自己不做任何自定义绘画。

【问题讨论】:

  • 你的表单有多重(多少个控件)?你在做任何定制的绘画吗?有自定义控件吗?表单或控件的 Load 或 Init 事件发生了多少处理?
  • 那里有多少张图片?其中有多少是调整大小的?您是否对 UserControls 使用 DoubleBuffered 属性?渲染需要多少时间?表单上有多少个控件?

标签: .net winforms .net-3.5


【解决方案1】:

您可以致电SuspendLayout,然后再拨打ResumeLayout

【讨论】:

    【解决方案2】:

    您正危险地接近在表单上拥有太多控件。您会看到每个控件轮流绘制自己。双缓冲无法解决此问题,必须对具有所有控制窗口的整个表单进行双缓冲。从 XP 开始这是可能的,它支持 WS_EX_COMPOSITED 窗口样式标志。它不会加快绘画速度,但在所有渲染完成之前不会更新屏幕。

    将此代码粘贴到您的表单中以启用它:

    protected override CreateParams CreateParams {
      get {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
        return cp;
      }
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 2019-07-23
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多