我有一個按鈕可以動態地將最多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