ssCAROのブログ

色んなとこで見つけたプログラムのメモ置き場っぽい

TableLayoutPanelにプログラムで列(Column)を追加

横にLabelを並べてチェック用の数値を表示したい。
チェック項目は設定で変更される。

Formのサイズを取得して、Labelのサイズを調整しても良かったけどTableLayoutPanelを使ってみた。

参考にしたHP
http://dobon.net/vb/dotnet/control/tlrowstyles.html
http://dobon.net/vb/dotnet/control/tlrowinsert.html

FormにTableLayoutPanelを配置して横幅いっぱいまで広げる。
Labelは7個配置したい。

Dim intControllerStatusCount As Integer = 7

'動的にLabelを作成する
Dim lblControllerStatus() As Label
Array.Resize(Of Label)(lblControllerStatus, intControllerStatusCount)

'TableLayoutPanelの行列を全削除してから、1行を追加
'デザイナで行列の追加削除を繰り返していると残ったりしたので。
tlpControllerStatus.ColumnStyles.Clear()
tlpControllerStatus.RowStyles.Clear()
tlpControllerStatus.ColumnCount = intControllerStatusCount
tlpControllerStatus.RowCount = 1
tlpControllerStatus.RowStyles.Add(New RowStyle(SizeType.Percent, 100))

Dim i As Integer
For i = 0 To intControllerStatusCount - 1
    'Labelの初期設定、MarginをAll=0にしないと綺麗に並ばない
    lblControllerStatus(i) = New Label
    lblControllerStatus(i).Dock = DockStyle.Fill
    lblControllerStatus(i).BorderStyle = BorderStyle.Fixed3D
    lblControllerStatus(i).Margin = New Padding(0)
    '同じサイズで配置する
    tlpControllerStatus.ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 100))
    tlpControllerStatus.Controls.Add(lblControllerStatus(i), i, 0)
Next

'動的に作成したLabelにテキストを書くと画面に反映されたのでOK
For i = 0 To lblControllerStatus.Length - 1
    lblControllerStatus(i).Text = i.ToString()
Next