注意:TableLayoutPanelコントロールは.NET Framework 2.0以降でのみ使用できます。
フォームデザイナを使ってセルを横、または下に拡張する方法は、「TableLayoutPanelコントロールを使って、コントロールを表形式で整列させる」で説明しました。つまり、セルにあるコントロールのRowSpanまたはColumnSpanプロパティの値を変更するという方法です。しかしこの方法はフォームデザイナを使った時しか有効でなく、実際のコントロールのクラスにはRowSpanやColumnSpanプロパティは存在しません。
実際のコードでは、TableLayoutPanel.SetRowSpanとSetColumnSpanメソッドを使って行と列を拡大(あるいは縮小)します。また、GetRowSpanとGetColumnSpanメソッドにより、コントロールが占有している行と列の数を取得できます。
次のコードでは、tableLayoutPanel1に配置されたcurrentControlが占有する列を一つ増やしています。ここでは念のために、現在のtableLayoutPanel1の列の数を超えないようにしていますが、これを超えた数値を設定しても問題ないため、こうする必要はありません。
Dim newColSpan As Integer = _ TableLayoutPanel1.GetColumnSpan(currentControl) + 1 'テーブルの列の数より大きくなることをさける 'SetColumnSpanでテーブルの列の数より大きい値を設定できるので、チェックしなくても問題ない If TableLayoutPanel1.ColumnCount >= _ TableLayoutPanel1.GetColumn(currentControl) + newColSpan Then TableLayoutPanel1.SetColumnSpan(currentControl, newColSpan) End If
int newColSpan = tableLayoutPanel1.GetColumnSpan(currentControl) + 1; //テーブルの列の数より大きくなることをさける //SetColumnSpanでテーブルの列の数より大きい値を設定できるので、チェックしなくても問題ない if (tableLayoutPanel1.ColumnCount >= tableLayoutPanel1.GetColumn(currentControl) + newColSpan) { tableLayoutPanel1.SetColumnSpan(currentControl, newColSpan); }
「TableLayoutPanelコントロールを使って、コントロールを表形式で整列させる」で紹介しているサンプル「TableLayoutPanel1.exe」では、コントロールを右クリックして表示されるメニューから、列と行を1つ拡大できるようになっています。動作の確認にご利用ください。
(この記事は、「.NETプログラミング研究」で紹介したものを基にしています。)
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。