在 Windows Forms DataGrid(不是 DataGridView)中增加列 Header 的高度
Increase the Height of Column Header in a Windows Forms DataGrid (Not DataGridView)
我正在开发一个 Windows Forms 应用程序,我有一个 DataGrid
,我正试图为其增加列的高度 headers。
我知道它是如何为 datagridview 完成的,但我不确定 DataGrid
。
我有一个名为 Actual \n Qty
的列,显示如下:
我可以知道增加列 header 高度的方法吗?
DataGrid is calculated based on HeaderFont
property and is stored in a private filed headerFontHeight
中列 header 的高度。您可以使用反射获取该字段并以这种方式更改其值:
var p = typeof(DataGrid).GetField("headerFontHeight",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
p.SetValue(dataGrid1, dataGrid1.HeaderFont.Height * 2);
var m = typeof(DataGrid).GetMethod("OnLayout",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
m.Invoke(dataGrid1, new object[] { null });
dataGrid1.Invalidate();
您可以指定您认为足够的高度,也可以计算所有列的文本高度并将该字段设置为最大值。
我正在开发一个 Windows Forms 应用程序,我有一个 DataGrid
,我正试图为其增加列的高度 headers。
我知道它是如何为 datagridview 完成的,但我不确定 DataGrid
。
我有一个名为 Actual \n Qty
的列,显示如下:
我可以知道增加列 header 高度的方法吗?
DataGrid is calculated based on HeaderFont
property and is stored in a private filed headerFontHeight
中列 header 的高度。您可以使用反射获取该字段并以这种方式更改其值:
var p = typeof(DataGrid).GetField("headerFontHeight",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
p.SetValue(dataGrid1, dataGrid1.HeaderFont.Height * 2);
var m = typeof(DataGrid).GetMethod("OnLayout",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
m.Invoke(dataGrid1, new object[] { null });
dataGrid1.Invalidate();
您可以指定您认为足够的高度,也可以计算所有列的文本高度并将该字段设置为最大值。