クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
.NET 開発
.NET Framework 3.5
.NET Framework
System.Windows.Forms 名前空間
TableLayoutPanel クラス
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2008/.NET Framework 3.5

その他のバージョンについては、以下の情報を参照してください。
.NET Framework クラス ライブラリ
TableLayoutPanel クラス

更新 : 2008 年 7 月

行と列で構成されるグリッドに内容を動的にレイアウトするパネルを表します。

名前空間 :  System.Windows.Forms
アセンブリ :  System.Windows.Forms (System.Windows.Forms.dll 内)

Visual Basic (宣言)
<DockingAttribute(DockingBehavior.Never)> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
Public Class TableLayoutPanel _
    Inherits Panel _
    Implements IExtenderProvider
Visual Basic (使用法)
Dim instance As TableLayoutPanel
C#
[DockingAttribute(DockingBehavior.Never)]
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
public class TableLayoutPanel : Panel, 
    IExtenderProvider
Visual C++
[DockingAttribute(DockingBehavior::Never)]
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)]
public ref class TableLayoutPanel : public Panel, 
    IExtenderProvider
J#
/** @attribute DockingAttribute(DockingBehavior.Never) */
/** @attribute ComVisibleAttribute(true) */
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */
public class TableLayoutPanel extends Panel implements IExtenderProvider
JScript
public class TableLayoutPanel extends Panel implements IExtenderProvider

TableLayoutPanel コントロールは、内容をグリッド内に配置します。レイアウトはデザイン時と実行時の両方に行われるため、アプリケーション環境の変更に合わせて動的に変更できます。これにより、パネル内のコントロールは比例的にサイズを変更できるため、親コントロールのサイズ変更、ローカリゼーションによるテキスト長の変更などの変更に合わせることができます。

TableLayoutPanel のその他のインスタンスを含む Windows フォーム コントロールは、TableLayoutPanel コントロールの子になります。これにより、実行時の変更に合わせた高度なレイアウトを構築できます。

TableLayoutPanel コントロールは、RowCountColumnCount、および GrowStyle の各プロパティの値に応じて、新しいコントロールが追加されたときにこれらを収容するように拡張できます。RowCount プロパティまたは ColumnCount プロパティの値を 0 に設定すると、TableLayoutPanel が対応する方向で非バインドになることを指定します。

TableLayoutPanel コントロールが子コントロールでいっぱいになった後、拡張の方向 (水平または垂直) を制御することもできます。既定では、TableLayoutPanel コントロールは行の追加によって下方向に拡張します。

既定の動作と異なる動作をする行と列を使用する場合、RowStyles プロパティおよび ColumnStyles プロパティを使用して、行と列のプロパティを制御できます。行または列のプロパティを個別に設定できます。

TableLayoutPanel コントロールは、CellColumnRowColumnSpan、および RowSpan の各プロパティを子コントロールに追加します。

子コントロールで ColumnSpan プロパティまたは RowSpan プロパティを設定すると、TableLayoutPanel コントロールのセルをマージできます。

メモ :

CellColumnRowColumnSpanRowSpan の各プロパティを実行時に設定するには、SetCellPosition()()()SetColumn()()()SetRow()()()SetColumnSpan()()()SetRowSpan()()() の各メソッドを使用します。

CellColumnRowColumnSpanRowSpan の各プロパティを実行時に読み取るには、GetCellPosition()()()GetColumn()()()GetRow()()()GetColumnSpan()()()GetRowSpan()()() の各メソッドを使用します。

子コントロールのドッキング動作は、その他のコンテナ コントロールと同じです。

TableLayoutPanel の子コントロールの固定動作は、他のコンテナ コントロールの動作とは異なります。子コントロールの Anchor プロパティの値が Left または Right に設定されている場合、コントロールは、セルの左境界線または右境界線に対して、コントロールの Margin プロパティとパネルの Padding プロパティを合計した位置に配置されます。Left 値と Right 値の両方が設定されている場合、コントロールのサイズは、Margin 値と Padding 値を考慮して、セルの幅に合わせて変更されます。TopBottom の固定に関する動作も同様です。詳細については、「方法 : TableLayoutPanel コントロールで子コントロールを固定およびドッキングする」を参照してください。

子コントロールで他のコンテナ コントロールの既定の固定動作を模倣する必要がある場合は、コントロールの境界線とセルの境界線の間の距離が一定になるように、Margin プロパティおよび Padding プロパティを調整できます。

子コントロールの Column プロパティと Row プロパティの値を -1 に設定すると、コントロールが TableLayoutPanel コントロール内の最初の空のセルに移動します。空のセルは、左から右、上から下の順に行われる検索で選択されます。この順序はカルチャに応じて異なるため、右から左 (RTL) のレイアウトで正しく動作します。

メモ :

TableLayoutPanel コントロールのレイアウト計算に関係するのは、Visible プロパティが true に設定されているコントロールだけです。

TopicLocation
チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置Windows フォーム コントロール
チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置Windows フォーム コントロール
チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置Windows フォーム コントロール
方法 : TableLayoutPanel コントロールの列と行を編集するWindows フォーム コントロール
方法 : TableLayoutPanel コントロールの列と行を編集するWindows フォーム コントロール
方法 : TableLayoutPanel コントロールの列と行を編集するWindows フォーム コントロール
方法 : TableLayoutPanel コントロールの行と列を拡大するWindows フォーム コントロール
方法 : TableLayoutPanel コントロールの行と列を拡大するWindows フォーム コントロール
方法 : TableLayoutPanel コントロールの行と列を拡大するWindows フォーム コントロール
方法 : TableLayoutPanel コントロール内でコントロールを配置して伸縮するWindows フォーム コントロール
方法 : TableLayoutPanel コントロール内でコントロールを配置して伸縮するWindows フォーム コントロール
方法 : TableLayoutPanel コントロール内でコントロールを配置して伸縮するWindows フォーム コントロール

OnCellPaint メソッドをオーバーライドして、セルのカスタムの外観を作成する方法を次のコード例に示します。TableLayoutPanel コントロールを使用して、サイズ変更に合わせたレイアウトを作成する例については、「TableLayoutPanel コントロールのサンプル」を参照してください。

Visual Basic
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 c IsNot 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

C#
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..::.Object
  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
この型のすべてのパブリック static (Visual Basic では Shared) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0、2.0

日付

履歴

理由

2008 年 7 月

子コントロールに追加された取得および設定プロパティを明確にするための注を、「解説」セクションに追加。Column および Row プロパティを -1 に設定することについての解説を修正。

カスタマ フィードバック

コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
Page view tracker