TableLayoutPanel クラス
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

<ComVisibleAttribute(True)> _ <ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _ Public Class TableLayoutPanel Inherits Panel Implements IExtenderProvider
[ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] public class TableLayoutPanel : Panel, IExtenderProvider
[ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)] public ref class TableLayoutPanel : public Panel, IExtenderProvider

TableLayoutPanel コントロールは、内容をグリッド内に配置します。レイアウトはデザイン時と実行時の両方に行われるため、アプリケーション環境の変更に合わせて動的に変更できます。これにより、パネル内のコントロールは比例的にサイズを変更できるため、親コントロールのサイズ変更、ローカリゼーションによるテキスト長の変更などの変更に合わせることができます。
TableLayoutPanel のその他のインスタンスを含む Windows フォーム コントロールは、TableLayoutPanel コントロールの子になります。これにより、実行時の変更に合わせた高度なレイアウトを構築できます。
TableLayoutPanel コントロールは、RowCount、ColumnCount、および GrowStyle の各プロパティの値に応じて、新しいコントロールが追加されたときにこれらを収容するように拡張できます。RowCount プロパティまたは ColumnCount プロパティの値を 0 に設定すると、TableLayoutPanel が対応する方向で非バインドになることを指定します。
TableLayoutPanel コントロールが子コントロールでいっぱいになった後、拡張の方向 (水平または垂直) を制御することもできます。既定では、TableLayoutPanel コントロールは行の追加によって下方向に拡張します。
既定の動作と異なる動作をする行と列を使用する場合、RowStyles プロパティおよび ColumnStyles プロパティを使用して、行と列のプロパティを制御できます。行または列のプロパティを個別に設定できます。
TableLayoutPanel コントロールは、Cell、Column、Row、ColumnSpan、および RowSpan の各プロパティを子コントロールに追加します。
子コントロールで ColumnSpan プロパティまたは RowSpan プロパティを設定すると、TableLayoutPanel コントロールのセルをマージできます。
子コントロールのドッキング動作は、その他のコンテナ コントロールと同じです。
TableLayoutPanel の子コントロールの固定動作は、他のコンテナ コントロールの動作とは異なります。子コントロールの Anchor プロパティの値が Left または Right に設定されている場合、コントロールは、セルの左境界線または右境界線に対して、コントロールの Margin プロパティとパネルの Padding プロパティを合計した位置に配置されます。Left 値と Right 値の両方が設定されている場合、コントロールのサイズは、Margin 値と Padding 値を考慮して、セルの幅に合わせて変更されます。Top と Bottom の固定に関する動作も同様です。詳細については、「方法 : TableLayoutPanel コントロールで子コントロールを固定およびドッキングする」を参照してください。
子コントロールで他のコンテナ コントロールの既定の固定動作を模倣する必要がある場合は、コントロールの境界線とセルの境界線の間の距離が一定になるように、Margin プロパティおよび Padding プロパティを調整できます。
実行時に、子コントロールの Column プロパティと Row プロパティの値を -1 に設定すると、コントロールが TableLayoutPanel コントロール内の最初の空のセルに移動します。空のセルは、左から右、上から下の順に行われる検索で選択されます。この順序はカルチャに応じて異なるため、右から左 (RTL) のレイアウトで正しく動作します。デザイン時は、これらのプロパティを -1 に設定しても、子コントロールは移動しません。

OnCellPaint メソッドをオーバーライドして、セルのカスタムの外観を作成する方法を次のコード例に示します。TableLayoutPanel コントロールを使用して、サイズ変更に合わせたレイアウトを作成する例については、「TableLayoutPanel コントロールのサンプル」を参照してください。
Public Class DemoTableLayoutPanel Inherits TableLayoutPanel Protected Overrides Sub OnCellPaint( _ ByVal e As System.Windows.Forms.TableLayoutCellPaintEventArgs) MyBase.OnCellPaint(e) Dim c As Control = Me.GetControlFromPosition(e.Column, e.Row) If Not c Is Nothing Then Dim g As Graphics = e.Graphics g.DrawRectangle( _ Pens.Red, _ e.CellBounds.Location.X + 1, _ e.CellBounds.Location.Y + 1, _ e.CellBounds.Width - 2, _ e.CellBounds.Height - 2) g.FillRectangle( _ Brushes.Blue, _ e.CellBounds.Location.X + 1, _ e.CellBounds.Location.Y + 1, _ e.CellBounds.Width - 2, _ e.CellBounds.Height - 2) End If End Sub End Class
public class DemoTableLayoutPanel : TableLayoutPanel { protected override void OnCellPaint(TableLayoutCellPaintEventArgs e) { base.OnCellPaint(e); Control c = this.GetControlFromPosition(e.Column, e.Row); if ( c != null ) { Graphics g = e.Graphics; g.DrawRectangle( Pens.Red, e.CellBounds.Location.X+1, e.CellBounds.Location.Y + 1, e.CellBounds.Width - 2, e.CellBounds.Height - 2); g.FillRectangle( Brushes.Blue, e.CellBounds.Location.X + 1, e.CellBounds.Location.Y + 1, e.CellBounds.Width - 2, e.CellBounds.Height - 2); }; } }

System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ScrollableControl
System.Windows.Forms.Panel
System.Windows.Forms.TableLayoutPanel
System.ComponentModel.Design.ByteViewer


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- TableLayoutPanel クラスのページへのリンク