Actualización: Julio de 2008
Representa un panel que dispone su contenido dinámicamente en una cuadrícula compuesta por filas y columnas.
Ensamblado: System.Windows.Forms (en System.Windows.Forms.dll)
<DockingAttribute(DockingBehavior.Never)> _ <ComVisibleAttribute(True)> _ <ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _ Public Class TableLayoutPanel _ Inherits Panel _ Implements IExtenderProvider
Dim instance As TableLayoutPanel
[DockingAttribute(DockingBehavior.Never)] [ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] public class TableLayoutPanel : Panel, IExtenderProvider
[DockingAttribute(DockingBehavior::Never)] [ComVisibleAttribute(true)] [ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)] public ref class TableLayoutPanel : public Panel, IExtenderProvider
/** @attribute DockingAttribute(DockingBehavior.Never) */ /** @attribute ComVisibleAttribute(true) */ /** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ public class TableLayoutPanel extends Panel implements IExtenderProvider
public class TableLayoutPanel extends Panel implements IExtenderProvider
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.
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).
Nota:
|
|---|
|
Solamente los controles que tienen la propiedad Visible establecida en true participan en los cálculos de diseño del control TableLayoutPanel. |
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.
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
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 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.
.NET Framework
Compatible con: 3.5, 3.0, 2.0Referencia
Otros recursos
|
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. |
Nota: