public void AutoSizeGrid(DataGrid dg)
{
int numRows = ((DataTable)dg.DataSource).Rows.Count;
Graphics g = Graphics.FromHwnd(dg.Handle);
StringFormat sf = new StringFormat(StringFormat.GenericTypographic);
SizeF size;
MethodInfo mi = dg.GetType().GetMethod("get_DataGridRows",
BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase | BindingFlags.Instance
| BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);
System.Array dgra = (System.Array)mi.Invoke(dg,null);
ArrayList DataGridRows = new ArrayList();
foreach (object dgrr in dgra)
{
if (dgrr.ToString().EndsWith("DataGridRelationshipRow")==true)
DataGridRows.Add(dgrr);
}
for (int i = 0; i < ??; ++i)
{
size = g.MeasureString(dg[i,1].ToString(),dg.Font,400,sf);
int h = Convert.ToInt32(size.Height);
h = h + 8;
PropertyInfo pi = DataGridRows[i].GetType().GetProperty("Height");
pi.SetValue(DataGridRows[i],0,null);
}
g.Dispose();
}
{
int numRows = ((DataTable)dg.DataSource).Rows.Count;
Graphics g = Graphics.FromHwnd(dg.Handle);
StringFormat sf = new StringFormat(StringFormat.GenericTypographic);
SizeF size;
MethodInfo mi = dg.GetType().GetMethod("get_DataGridRows",
BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase | BindingFlags.Instance
| BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);
System.Array dgra = (System.Array)mi.Invoke(dg,null);
ArrayList DataGridRows = new ArrayList();
foreach (object dgrr in dgra)
{
if (dgrr.ToString().EndsWith("DataGridRelationshipRow")==true)
DataGridRows.Add(dgrr);
}
for (int i = 0; i < ??; ++i)
{
size = g.MeasureString(dg[i,1].ToString(),dg.Font,400,sf);
int h = Convert.ToInt32(size.Height);
h = h + 8;
PropertyInfo pi = DataGridRows[i].GetType().GetProperty("Height");
pi.SetValue(DataGridRows[i],0,null);
}
g.Dispose();
}
该方法用于自动调整DataGrid中行的高度,以确保每行能够完全显示其内容而不被截断。通过测量单元格内文本的实际高度并据此设置行高,提高了表格的可读性和用户体验。
5344

被折叠的 条评论
为什么被折叠?



