TableLayoutPanel (Clase) (System.Windows.Forms)

Cambiar vista:
Sin script
Biblioteca de clases de .NET Framework
TableLayoutPanel (Clase)

Actualización: Julio de 2008

Representa un panel que dispone su contenido dinámicamente en una cuadrícula compuesta por filas y columnas.

Espacio de nombres:  System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)
Sintaxis

Visual Basic (Declaración)
<DockingAttribute(DockingBehavior.Never)> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
Public Class TableLayoutPanel _
	Inherits Panel _
	Implements IExtenderProvider
Visual Basic (Uso)
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
Comentarios

El control TableLayoutPanel organiza su contenido en una cuadrícula. Puesto que el diseño se realiza en tiempo de diseño y en tiempo de ejecución, puede cambiar dinámicamente a medida que cambie el entorno de la aplicación. Esto ofrece a los controles del panel la posibilidad de cambiar de tamaño proporcionalmente, por lo que puede responder a cambios como el cambio de tamaño del control principal o el cambio de la longitud del texto debido a la adaptación.

Cualquier control de formularios Windows Forms puede ser un elemento secundario del control TableLayoutPanel, incluyendo otras instancias de TableLayoutPanel. Esto le permite construir diseños sofisticados que se adaptan a los cambios en tiempo de ejecución.

El control TableLayoutPanel puede expandirse para alojar nuevos controles a medida que se agreguen, dependiendo del valor de las propiedades RowCount, ColumnCount y GrowStyle. Establecer la propiedad RowCount o ColumnCount en un valor 0 especifica que TableLayoutPanel se desenlazará en la dirección correspondiente.

También puede controlar la dirección de expansión (horizontal o vertical) cuando el control TableLayoutPanel esté lleno de controles secundarios. De manera predeterminada, el control TableLayoutPanel se expande hacia abajo agregando filas.

Si desea que las filas y las columnas se comporten de manera diferente que el comportamiento predeterminado, puede controlar las propiedades de las filas y columnas utilizando las propiedades RowStyles y ColumnStyles. Puede establecer las propiedades de filas o columnas individualmente.

El control TableLayoutPanel agrega las propiedades siguientes a sus controles secundarios: Cell, Column, Row, ColumnSpan y RowSpan.

Puede combinar celdas del control TableLayoutPanel estableciendo las propiedades ColumnSpan o RowSpan en un control secundario.

2t82c7dk.alert_note(es-es,VS.90).gif Nota:

Para establecer las propiedades Cell, Column, Row, ColumnSpan y RowSpan en tiempo de ejecución, use los métodos SetCellPosition(), SetColumn(), SetRow(), SetColumnSpan() y SetRowSpan().

Para leer las propiedades Cell, Column, Row, ColumnSpan y RowSpan en tiempo de ejecución, use los métodos GetCellPosition(), GetColumn(), GetRow(), GetColumnSpan() y GetRowSpan().

El comportamiento de acoplamiento de los controles secundarios es el mismo que el de otros controles contenedores.

El comportamiento de anclaje de los controles secundarios de un control TableLayoutPanel difiere del de otros controles contenedores. Si el valor de la propiedad Anchor del control secundario se establece en Left o Right, el control se colocará contra el borde izquierdo o derecho de la celda, a una distancia que es la suma de la propiedad Margin del control y la propiedad Padding del panel. Si se establecen los dos valores Left y Right, se ajustará el tamaño del control al ancho de la celda, teniendo en cuenta los valores Margin y Padding. El comportamiento para el anclaje Top y Bottom es análogo. Para obtener más información, vea Cómo: Delimitar y acoplar controles secundarios en un control TableLayoutPanel.

Si necesita que un control secundario imite el comportamiento de anclaje predeterminado de otros controles contenedores, puede ajustar las propiedades Margin y Padding para mantener una distancia constante entre el borde de control y el borde de la celda.

Si se establecen los valores de las propiedades Column y Row de un control secundario en -1, el control se desplazará a la primera celda vacía del control TableLayoutPanel. La celda vacía se elegirá en una búsqueda que se realiza de izquierda a derecha y de la parte superior a la inferior. Este orden depende de la referencia cultural, por lo que se comportará correctamente en diseños de derecha a izquierda (RTL).

2t82c7dk.alert_note(es-es,VS.90).gif Nota:

Solamente los controles que tienen la propiedad Visible establecida en true participan en los cálculos de diseño del control TableLayoutPanel.

Ejemplos

En el ejemplo de código siguiente se muestra cómo reemplazar el método OnCellPaint para crear una apariencia personalizada para una celda. Para obtener un ejemplo que utiliza el control TableLayoutPanel para crear diseños que respondan bien a los cambios de tamaño, vea Ejemplo TableLayoutPanel Control.

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);
        };
	}

}


Jerarquía de herencia

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
Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Plataformas

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 y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Información de versión

.NET Framework

Compatible con: 3.5, 3.0, 2.0
Vea también

Referencia

Otros recursos

Historial de cambios

Fecha

Historial

Motivo

Julio de 2008

Se ha agregado una nota a la sección de comentarios para aclarar la obtención y el establecimiento de las propiedades que se agregan a un control secundario. Se ha corregido el comentario sobre el establecimiento de las propiedades Column y Row en -1.

Comentarios de los clientes.