viernes, 20 de junio de 2008

Cómo modificar la cantidad de filas en un TableLayoutPanel

Cuando creamos con el diseñador un TableLayoutPanel podemos indicar la cantidad de filas y columnas que deseamos tener. Pero esta cantidad puede cambiar durante la ejecución del programa, y sobre esto trata este post.

Para nuestro ejemplo, supondremos que tenemos un TableLayoutPanel llamado "panel" con dos filas, y queremos agregar una tercera. Agregar el control es fácil:

Label lbl = new Label();
lbl.setText( "Etiqueta de ejemplo" );
panel.Controls.Add( lbl, 0, 2 ); // Primera columna, tercera fila


Sin embargo, no veremos la tercera fila todavía. De nada sirve hacer panel.Rows = 3. El problema reside en la lista de RowStyles que contiene el layout: sigue creyendo que tiene dos filas, cada una con la altura indicada en el diseñador, y ocupando todo el espacio visual del Layout. Tendremos que regenerarlas, por ejemplo, haciendo:

panel.RowStyles.Clear();
for( int i=0; i != 3; ++i ) { // 3 filas
RowStyle rs = new RowStyle();
rs.Height = 20; // 20 píxeles
panel.RowStyles.Add( rs );
}


En realidad, no es necesario establecer manualmente una altura para cada fila. El siguiente código hace que se recalculen las alturas automáticamente:

panel.RowStyles.Clear();
for( int i=0; i != 3; ++i ) { // 3 filas
panel.RowStyles.Add( new RowStyle() );
}

No hay comentarios: