使 FlowLayoutPanel 具有透明背景

Making A FlowLayoutPanel have a transparent background

我有一个按钮可以动态地向表单添加最多 24 个标签。问题是他们的位置。

我发现我可以让它们像 FlowLayoutPanel 那样自动排列,而不是手动为每个位置设置特定位置。但 FLP 将位于顶部并隐藏其下方的控件。把它送回去更糟。所以我想把它放在前面但保持透明,这样它就不会隐藏它下面的其他控件。

有什么建议都很好

谢谢。

I can have them automatically arranged like a FlowLayoutPanel does. But I can't use one because it will be on top and hide the images in my pic's.

好吧,您可以使用具有透明背景的 FlowLayoutPanel,这样它就不会隐藏您拥有的其他控件。怎么做?那么,this answer 向您展示了如何制作透明 Panel。您应该能够轻松地调整它以使用 FlowLayoutPanel 使用这样的东西:

Public Class TransparentFLP
    Inherits FlowLayoutPanel

    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.ExStyle = cp.ExStyle Or &H20 ''#WS_EX_TRANSPARENT
            Return cp
        End Get
    End Property
    Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
        ''#MyBase.OnPaintBackground(e) --> Don't uncomment this orelse
                                          'it will cause the BackColor to be redrawn.
    End Sub

End Class
  • 向您的项目添加一个新的 Class
  • 将上面的代码粘贴进去。
  • 重建您的项目。
  • 将工具箱顶部的新控件拖放到窗体上(而不是使用原来的 FlowLayoutPanel)。
  • 一切顺利。

P.S。我不确定你的 4 个面板的用途,但你可以考虑使用 TableLayoutPanel

希望对您有所帮助:)