C# 获取或设置PropertyGrid组件列宽度(分隔条宽度)
前言
PropertyGrid组件没有提供设置列宽的方法或属性,通过查看反编译的源码找到解决方案。
PropertyGrid组件的分隔条(Splitter)
设置分隔条宽度
C#
全选
/// <summary>
/// 设置PropertyGrid组件列宽度
/// </summary>
/// <param name="grid">PropertyGrid组件</param>
/// <param name="width">宽度</param>
public static void SetSplitterWidth(this PropertyGrid grid, int width)
if (width > grid.Width) { width = grid.Width - 2; }
//获取gridView字段定义,类型:PropertyGridView
FieldInfo field = typeof(PropertyGrid)
.GetField("gridView",
BindingFlags.NonPublic | BindingFlags.Instance);
//获取PropertyGridView组件的MoveSplitterTo方法
field.FieldType
.GetMethod("MoveSplitterTo",
BindingFlags.NonPublic | BindingFlags.Instance)
.Invoke(field.GetValue(grid), new object[] { width });
}
使用方法
C#
全选
propertyGrid1.SetSplitterWidth(150);
获取分隔条宽度
C#
全选
/// <summary>
/// 获取PropertyGrid组件的分割条宽度
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
public static int GetSplitterWidth(this PropertyGrid grid)
//获取gridView字段定义,类型:PropertyGridView
FieldInfo field = typeof(PropertyGrid)
.GetField("gridView",
BindingFlags.NonPublic | BindingFlags.Instance);
//获取gridView实例