martes, 15 de septiembre de 2015

Eliminar una fila de TableLayoutPanel en Windows Forms C#

Hola muy buenas.

Para aquellos que estén trabajando con TableLayoutPanel de Windows Forms, os traigo un método que nos permite eliminar una fila de la tabla con la que estemos trabajando.

Buscando por Internet, he encontrado muchos ejemplos de los cuales me he basado, pero ninguno de ellos funcionan al 100%. Este es más genérico y lo he utilizado para mi trabajo y creo que puede ser de ayuda para cualquiera.


public static void RemoveRowTableLayout(System.Windows.Forms.TableLayoutPanel tableLayoutPanel, int rowNumber)
{

 var controlesTotal = Enumerable.Range(0, tableLayoutPanel.ColumnCount).Select(x => new Tuple(tableLayoutPanel.GetControlFromPosition(x, rowNumber), x)).ToArray;

 for (index = 0; index <= controlesTotal.Length - 1; index++) {
  dynamic item = controlesTotal(index);

  if ((item.Item1 != null)) {
   tableLayoutPanel.Controls.Remove(item.Item1);
  }
 }

 foreach (Control control in tableLayoutPanel.Controls) {
  int row = tableLayoutPanel.GetRow(control);
  if (row > rowNumber) {
   tableLayoutPanel.SetRow(control, row - 1);
  }
 }

 tableLayoutPanel.RowStyles.RemoveAt(rowNumber);
 tableLayoutPanel.RowCount = tableLayoutPanel.RowCount - 1;

}

Una posible mejora puede ser transformar el método a un método extensor para que pueda ser encapsulado dentro de la misma clase del control tabla.

1 comentario:

  1. Establecí con éxito mi negocio de restaurante con la ayuda de una Compañía de Préstamos Públicos que me otorgó un préstamo de 350k a una tasa del 3% a cambio, estoy pagando mensualmente y me ha ido muy bien trabajando con ellos.
    Cualquier persona que busque un préstamo para iniciar o expandir sus negocios debe comunicarse con el Sr. pedroloanss@gmail.com o el número de WhatsApp +1-863-231-0632 sobre cómo solicitarlo.
    Buena suerte.

    ResponderEliminar