我有一个按钮可以动态地将最多24个标签添加到窗体中。问题是他们的位置。使FlowLayoutPanel具有透明背景
我想到,而不是手动设置每个特定的位置,我可以让他们自动排列像FlowLayoutPanel一样。但FLP将处于最佳状态,并隐藏其下的控制。并且发回它更糟糕。所以我想把它放在前面,但保持透明,这样它就不会隐藏它下面的其他控件。
任何建议将很好
谢谢。
我有一个按钮可以动态地将最多24个标签添加到窗体中。问题是他们的位置。使FlowLayoutPanel具有透明背景
我想到,而不是手动设置每个特定的位置,我可以让他们自动排列像FlowLayoutPanel一样。但FLP将处于最佳状态,并隐藏其下的控制。并且发回它更糟糕。所以我想把它放在前面,但保持透明,这样它就不会隐藏它下面的其他控件。
任何建议将很好
谢谢。
我可以让它们像FlowLayoutPanel一样自动排列。 但我不能使用一个,因为它会在上面,并隐藏我的图片 中的图像。
那么,你可以使用带透明背景的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
代替。
希望能帮到:)
'FlowLayoutPanel'并不神奇。当你使用它时,你不必指定每个子控件的'Location',因为它包含自己计算它们的代码。如果你使用'Panel',那么它就不会包含这样的代码,所以你必须自己计算它们。这是没有办法的。您可以继承'Panel'并封装该代码,但您仍然需要以这种或那种方式编写代码。 – jmcilhinney
@ jmcilhinney - 好的,我会编辑我的文章,让事情更清楚。 (方式更清晰...) – TGamer
如果有必要,我会发布我的设计的屏幕截图 – TGamer