[FlowLayoutPanel][Tips] コントロールの折り返しを設定する

FlowLayoutPanelに配置されたコントロールは、WrapContentsプロパティで折り返し設定をすることができます。

折り返し設定をすることで、FlowLayoutPanelのサイズに合わせてコントロールが配置されます。

下記は、折り返しの設定をする例です。

[折り返しあり]のチェック状態に合わせて折り返しの設定を行います。

VBの例

' フォームロード時の処理
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    '境界の外にコントロールが表示された場合に対応できるよう
    'スクロールバー自動表示の設定をする
    FlowLayoutPanel1.AutoScroll = True
End Sub

' 「コントロールの配置方向」ラジオボタンのチェック変更時の処理
Private Sub rdoFlowDirection_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rdoTopDown.CheckedChanged, rdoRightToLeft.CheckedChanged, rdoLeftToRight.CheckedChanged, rdoBottomUp.CheckedChanged
    If rdoLeftToRight.Checked = True Then
        '左から右
        FlowLayoutPanel1.FlowDirection = FlowDirection.LeftToRight
    ElseIf rdoTopDown.Checked = True Then
        '上から下
        FlowLayoutPanel1.FlowDirection = FlowDirection.TopDown
    ElseIf rdoRightToLeft.Checked = True Then
        '右から左
        FlowLayoutPanel1.FlowDirection = FlowDirection.RightToLeft
    Else
        '下から上
        FlowLayoutPanel1.FlowDirection = FlowDirection.BottomUp
    End If
End Sub

' [折り返しあり]チェック変更時の処理
Private Sub chkWrap_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkWrap.CheckedChanged
    If chkWrap.Checked = True Then
        '★★★コントロールの折り返しを有効にする★★★
        FlowLayoutPanel1.WrapContents = True
    Else
        '★★★コントロールの折り返しを無効にする★★★
        FlowLayoutPanel1.WrapContents = False
    End If
End Sub

C#の例

// フォームロード時の処理
private void Form2_Load(object sender, EventArgs e)
{
    // 境界の外にコントロールが表示された場合に対応できるよう
    // スクロールバー自動表示の設定をする
    flowLayoutPanel1.AutoScroll = true;
}

// [コントロールの配置方向」ラジオボタンのチェック変更時の処理
private void rdoFlowDirection_CheckedChanged(object sender, EventArgs e)
{
    if (rdoLeftToRight.Checked == true)
    {
        // 左から右
        flowLayoutPanel1.FlowDirection = FlowDirection.LeftToRight;
    }
    else if (rdoTopDown.Checked == true)
    {
        // 上から下
        flowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
    }
    else if (rdoRightToLeft.Checked == true)
    {
        // 右から左
        flowLayoutPanel1.FlowDirection = FlowDirection.RightToLeft;
    }
    else
    {
        // 下から上
        flowLayoutPanel1.FlowDirection = FlowDirection.BottomUp;
    }
}

// [折り返しあり]チェック変更時の処理
private void chkWrap_CheckedChanged(object sender, EventArgs e)
{
    if (chkWrap.Checked == true)
    {
        // ★★★コントロールの折り返しを有効にする★★★
        flowLayoutPanel1.WrapContents = true;
    }
    else
    {
        // ★★★コントロールの折り返しを無効にする★★★
        flowLayoutPanel1.WrapContents = false;
    }
}

[FlowLayoutPanel][Tips] コントロールが配置される方向を指定する

FlowLayputPanel上にあるコントロールの配置方向を設定するにはFlowDirectionプロパティを使用します。

FlowDirectionプロパティには、FlowDirection列挙体の値を指定することができます。

FlowDirection列挙体
メンバ名 説明
LeftToRight コントロールを左から右に配置する
TopDown コントロールを上から下に配置する
RightToLeft コントロールを右から左に配置する
BottomUp コントロールを下から上に配置する

下記は、コントロールの配置方向を設定する例です。

ラジオボタンの内容に合わせてコントロールを再配置します。

VBの例

' 「コントロールの配置方向」ラジオボタンのチェック変更時の処理
Private Sub rdoFlowDirection_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rdoTopDown.CheckedChanged, rdoRightToLeft.CheckedChanged, rdoLeftToRight.CheckedChanged, rdoBottomUp.CheckedChanged
    If rdoLeftToRight.Checked = True Then
        '★★★左から右★★★
        FlowLayoutPanel1.FlowDirection = FlowDirection.LeftToRight
    ElseIf rdoTopDown.Checked = True Then
        '★★★上から下★★★
        FlowLayoutPanel1.FlowDirection = FlowDirection.TopDown
    ElseIf rdoRightToLeft.Checked = True Then
        '★★★右から左★★★
        FlowLayoutPanel1.FlowDirection = FlowDirection.RightToLeft
    Else
        '★★★下から上★★★
        FlowLayoutPanel1.FlowDirection = FlowDirection.BottomUp
    End If
End Sub

C#の例

// 「コントロールの配置方向」ラジオボタンのチェック変更時の処理
private void rdoFlowDirection_CheckedChanged(object sender, EventArgs e)
{
    if (rdoLeftToRight.Checked == true)
    {
        // ★★★左から右★★★
        flowLayoutPanel1.FlowDirection = FlowDirection.LeftToRight;
    }
    else if (rdoTopDown.Checked == true)
    {
        // ★★★上から下★★★
        flowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
    }
    else if (rdoRightToLeft.Checked == true)
    {
        // ★★★右から左★★★
        flowLayoutPanel1.FlowDirection = FlowDirection.RightToLeft;
    }
    else
    {
        // ★★★下から上★★★
        flowLayoutPanel1.FlowDirection = FlowDirection.BottomUp;
    }
}