减少.NET FlowLayoutPanel的闪烁

4

我正在向FlowLayoutPanel中添加多个LinkLabel,并每隔几秒钟清除它们。虽然这样可以正常工作,但是闪烁非常明显。有没有办法减少闪烁?我尝试设置Form.DoubleBuffering,但没有帮助。


1
你为什么要添加/删除它们?设置可见性不就足够了吗?听起来你没有使用正确的控件来完成工作。 - leppie
我尝试设置可见属性,但它会闪烁。 - Thunder
2个回答

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

Public Class CustomFlowLayoutPanel Inherits FlowLayoutPanel

Public Sub New()
    MyBase.New()

    SetStyle(ControlStyles.UserPaint, True)
    SetStyle(ControlStyles.AllPaintingInWmPaint, True)
    SetStyle(ControlStyles.DoubleBuffer, True)

End Sub

End Class


不是理想的选择,但如果你想把事情做好,就得自己动手。 - Matt Skeldon
@MattSkeldon 你的理想解决方案是什么? - Smith
我的理想解决方案是标准控件可以正常工作,而不需要创建一个完全渲染标准控件无用的继承控件,因为一旦这样做了,标准控件就没有任何好处了。然而,理想和现实是完全不同的概念。 - Matt Skeldon

1
在向面板添加控件之前,尝试调用SuspendLayout()方法,然后在面板上调用ResumeLayout()方法。这样可以减少闪烁的情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接