Modificar la altura de las líneas de un DataGrid
Artículo por Club Developers · 28 agosto 2006
1974 vistas
Tendremos que usar las funcionalidades de System.Windows.Reflection. Para el ejemplo, implementaremos nuestra propia clase MiDataGrid derivada de DataGrid.
csharp
using System; using System.Reflection; using System.Windows.Forms; public class MiDataGrid : DataGrid { public MoDataGrid(): base() {} //... // método público que permite la modificación de la altura de la línea indicada public void setRowHeight(int rowindex, int rowheight) { // recuperamos la tabla de líneas Object[] rows = GetRows(); // decidimos de modificar todas las líneas con un valor negativo if(rowindex < 0) { foreach(object row in rows) { setHeight(row,rowheight);} } else { setHeight(rows[rowindex],rowheight);} } // obtenemos todas las líneas por reflection private object[] GetRows() { BindingFlags bf = BindingFlags.Instance | BindingFlags.NonPublic; Type t = this.GetType().BaseType; MethodInfo mi = t.GetMethod("get_DataGridRows",bf); return ((Object[])(mi.Invoke(this,null))); } // modificar la altura de la línea por reflection private void setHeight(object row, int rowheight) { row.GetType().GetProperty("Height").SetValue(row, rowheight, null); } }