【问题标题】:Reduce Flicker of .NET FlowLayoutPanel减少 .NET FlowLayoutPanel 的闪烁
【发布时间】:2011-03-27 18:44:32
【问题描述】:

我每隔几秒钟就清除多个 LinkLabel 并将其添加到 FlowLayoutPanel。它工作正常,但闪烁非常明显。有什么办法可以减少吗?我尝试设置 Form.DoubleBuffering,但没有帮助。

【问题讨论】:

  • 为什么要添加/删除它们?设置可见性还不够吗?听起来您没有使用正确的控制来完成这项工作。
  • 我试过设置可见属性,它也闪烁

标签: .net flicker flowlayoutpanel linklabel


【解决方案1】:

在向面板添加控件之前尝试为面板调用 SuspendLayout(),然后在面板上调用 ResumeLayout()。你可能会失去一点闪烁。

【讨论】:

    【解决方案2】:

    通过创建派生自 FlowLayoutPanel 的自定义控件并设置其样式进行管理,如下所示:

    公共类 CustomFlowLayoutPanel 继承 FlowLayoutPanel

    Public Sub New()
        MyBase.New()
    
        SetStyle(ControlStyles.UserPaint, True)
        SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        SetStyle(ControlStyles.DoubleBuffer, True)
    
    End Sub
    

    结束类

    【讨论】:

    • 不理想,但如果你想把事情做好,就自己做吧。
    • @MattSkeldon 您的理想解决方案是什么?
    • 我理想的解决方案是标准控件无需创建继承控件即可工作,这完全使标准控件变得毫无意义,因为一旦您这样做了,标准控件就没有任何好处。理想和现实是完全不同的概念。
    猜你喜欢
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2011-05-01
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多