DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

TableLayoutPanelのセルの行や列を拡大する

注意:TableLayoutPanelコントロールは.NET Framework 2.0以降でのみ使用できます。

フォームデザイナを使ってセルを横、または下に拡張する方法は、「TableLayoutPanelコントロールを使って、コントロールを表形式で整列させる」で説明しました。つまり、セルにあるコントロールのRowSpanまたはColumnSpanプロパティの値を変更するという方法です。しかしこの方法はフォームデザイナを使った時しか有効でなく、実際のコントロールのクラスにはRowSpanやColumnSpanプロパティは存在しません。

実際のコードでは、TableLayoutPanel.SetRowSpanSetColumnSpanメソッドを使って行と列を拡大(あるいは縮小)します。また、GetRowSpanGetColumnSpanメソッドにより、コントロールが占有している行と列の数を取得できます。

次のコードでは、tableLayoutPanel1に配置されたcurrentControlが占有する列を一つ増やしています。ここでは念のために、現在のtableLayoutPanel1の列の数を超えないようにしていますが、これを超えた数値を設定しても問題ないため、こうする必要はありません。

VB.NET
コードを隠すコードを選択
Dim newColSpan As Integer = _
    TableLayoutPanel1.GetColumnSpan(currentControl) + 1
'テーブルの列の数より大きくなることをさける
'SetColumnSpanでテーブルの列の数より大きい値を設定できるので、チェックしなくても問題ない
If TableLayoutPanel1.ColumnCount >= _
    TableLayoutPanel1.GetColumn(currentControl) + newColSpan Then
    TableLayoutPanel1.SetColumnSpan(currentControl, newColSpan)
End If
C#
コードを隠すコードを選択
int newColSpan = tableLayoutPanel1.GetColumnSpan(currentControl) + 1;
//テーブルの列の数より大きくなることをさける
//SetColumnSpanでテーブルの列の数より大きい値を設定できるので、チェックしなくても問題ない
if (tableLayoutPanel1.ColumnCount >=
    tableLayoutPanel1.GetColumn(currentControl) + newColSpan)
{
    tableLayoutPanel1.SetColumnSpan(currentControl, newColSpan);
}

TableLayoutPanelコントロールを使って、コントロールを表形式で整列させる」で紹介しているサンプル「TableLayoutPanel1.exe」では、コントロールを右クリックして表示されるメニューから、列と行を1つ拡大できるようになっています。動作の確認にご利用ください。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。