添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

C# 获取或设置PropertyGrid组件列宽度(分隔条宽度)


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实例