このコントロールをコード上から操作することって、そんなに無いと思うんですが、
無理やりプログラム上で使ってみました。
実行画像ですが、FlowLayoutPanel 内のコントロールの配置方向を矢印で書いてみました。
コントロールは矢印の始点から終点の方向に向かって配置されます。
Z 型になっている矢印があるのは、WrapContents が True になっているからです。
■参考文献
FlowLayoutPanel コントロール
FlowLayoutPanel クラス
■実行画像
ButtomUp 下から上へ
LeftToRight 左から右へ
RightToLeft 右から左へ
TopDown 上から下へ
WrapContents が False の場合の ButtomUp
Public Class FlowLayoutPanelTest
Private m_flowPanel As FlowLayoutPanel
Private Sub FlowLayoutPanelTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' SplitContainer の配置
Dim split As SplitContainer = New SplitContainer
split.Dock = DockStyle.Fill
split.BorderStyle = BorderStyle.Fixed3D
Me.Controls.Add(split)
' RadioButton の配置
Dim rdoBottomUp As RadioButton = New RadioButton()
rdoBottomUp.Text = FlowDirection.BottomUp.ToString()
rdoBottomUp.Location = New Point(10, 10)
AddHandler rdoBottomUp.CheckedChanged, AddressOf RadioButtons_CheckedChanged
split.Panel1.Controls.Add(rdoBottomUp)
Dim rdoLeftToRight As RadioButton = New RadioButton()
rdoLeftToRight.Text = FlowDirection.LeftToRight.ToString()
rdoLeftToRight.Location = New Point(10, 30)
AddHandler rdoLeftToRight.CheckedChanged, AddressOf RadioButtons_CheckedChanged
split.Panel1.Controls.Add(rdoLeftToRight)
Dim rdoRightToLeft As RadioButton = New RadioButton()
rdoRightToLeft.Text = FlowDirection.RightToLeft.ToString()
rdoRightToLeft.Location = New Point(10, 50)
AddHandler rdoRightToLeft.CheckedChanged, AddressOf RadioButtons_CheckedChanged
split.Panel1.Controls.Add(rdoRightToLeft)
Dim rdoTopDown As RadioButton = New RadioButton()
rdoTopDown.Text = FlowDirection.TopDown.ToString()
rdoTopDown.Location = New Point(10, 70)
AddHandler rdoTopDown.CheckedChanged, AddressOf RadioButtons_CheckedChanged
split.Panel1.Controls.Add(rdoTopDown)
' CheckBox の配置
Dim chkWrapContents As CheckBox = New CheckBox
chkWrapContents.Text = "WrapContents"
chkWrapContents.Location = New Point(10, 90)
chkWrapContents.Checked = True
AddHandler chkWrapContents.CheckedChanged, AddressOf WrapContents_CheckedChanged
split.Panel1.Controls.Add(chkWrapContents)
' FlowLayoutPanel 及び 内部の Button の配置
Me.m_flowPanel = New FlowLayoutPanel
Me.m_flowPanel.Size = New Size(split.Panel2.Width - 10, split.Panel2.Height - 10)
split.Panel2.AutoScroll = True
For index As Integer = 0 To 9
Dim btn As Button = New Button()
btn.Text = (index + 1).ToString()
Me.m_flowPanel.Controls.Add(btn)
' このコントロールで強制的に折り返す。という設定
'If index = 4 Then Me.m_flowPanel.SetFlowBreak(btn, True)
Next
split.Panel2.Controls.Add(Me.m_flowPanel)
End Sub
' 選択された RadioButton により、FlowLayoutPanel の FlowDirection を決める
Private Sub RadioButtons_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Dim directionText As String = DirectCast(sender, RadioButton).Text
Select Case directionText
Case FlowDirection.BottomUp.ToString()
Me.m_flowPanel.FlowDirection = FlowDirection.BottomUp
Case FlowDirection.LeftToRight.ToString()
Me.m_flowPanel.FlowDirection = FlowDirection.LeftToRight
Case FlowDirection.RightToLeft.ToString()
Me.m_flowPanel.FlowDirection = FlowDirection.RightToLeft
Case FlowDirection.TopDown.ToString()
Me.m_flowPanel.FlowDirection = FlowDirection.TopDown
End Select
End Sub
' コントロールを折り返すか否かの設定
Private Sub WrapContents_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Me.m_flowPanel.WrapContents = DirectCast(sender, CheckBox).Checked
End Sub
End Class