使 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
。
希望对您有所帮助:)
我有一个按钮可以动态地向表单添加最多 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
。
希望对您有所帮助:)