FlowLayoutPanel控制項,flowlayoutpanel
最近用到了FlowLayoutPanel控制項。感覺功能很強大~
整理記錄如下:
msdn的描述是這樣的:FlowLayoutPanel控制項沿著水平或垂直流方向排列其內容。其內容可以從一行換到下一行。或者,還可以對它的內容進行剪裁,而不是進行換行。
可以通過設定FlowDirection 屬性的值來指定流向。在從右向左(RTL)的布局中,FlowLayoutPanel 控制項會相應地反轉其流向。還可以通過設定WrapContents 屬性來指定是對FlowLayoutPanel 控制項的內容進行換行還是裁剪。
任何Windows表單控制項(包括FlowLayoutPanel 的其他執行個體)都可以是FlowLayoutPanel 控制項的子級。使用此功能,可以構造在運行時能夠根據表單的尺寸進行相應調整的複雜布局。
子控制項的停靠和錨定行為不同於其他容器控制項中的行為。停靠和錨定都是相對於流方向上的最大控制項而言的。
FlowLayoutPanel 是流式布局面板。可以實現動態添加控制項,實現響應式的布局排版。
①向FlowLayoutPanel 中添加控制項
Dim picBox As PictureBox = New PictureBoxpicBox.Image = Image.FromFile("C:\abc.bmp")picBox.Name = N1picBox.SizeMode = PictureBoxSizeMode.AutoSizeFlowLayoutPanel1.Controls.Add(picBox)FlowLayoutPanel1.SetFlowBreak(picBox, True)Dim labelN As Label = New LabellabelN.Text = ""labelN.Height = 30labelN.Width = 120labelN.TextAlign = ContentAlignment.MiddleLeftlabelN.Name = "labelN"labelN.ForeColor = Color.BlackFlowLayoutPanel1.Controls.Add(labelN)
FlowLayoutPanel1.SetFlowBreak(picBox, True)
是中斷流進行換行。
添加label ,且label的text為空白,設定label的寬高,是為了對控制項進行排版。對齊顯示。
②為子控制項綁定事件
Dim buttonN As Button = New ButtonbuttonN.Name = "Q_ButtonN"buttonN.BackColor = Color.RedbuttonN.Text = "XXXXXXXX"buttonN.Width = 55AddHandler buttonN.Click, AddressOf pic_DClickFlowLayoutPanel1.Controls.Add(buttonN)FlowLayoutPanel1.SetFlowBreak(buttonN, True)
點擊FlowLayoutPanel中添加的buttonN控制項的事件
Private Sub pic_DClick(sender As Object, e As EventArgs) For i = 1 To Me.FlowLayoutPanel1.Controls.Count - 1 If Me.FlowLayoutPanel1.Controls(i).Name = "Q_ButtonN2" Then Me.FlowLayoutPanel1.Controls(i).BackColor = Color.Gainsboro End If NextEnd Sub
通過遍曆Me.FlowLayoutPanel1.Controls(i),可以在添加的眾多控制項中找到你想要的。
FlowLayoutPanel控制項不直接支援MouseWheel事件,即滾動滾輪也不會有響應。
我通過在FlowLayoutPanel 的子控制項中添加焦點,來實現滾輪滾動
buttonN.Focus()
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。