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实例
     var view = field.GetValue(grid);

     var ps = field.FieldType.GetProperty("InternalLabelWidth", BindingFlags.NonPublic | BindingFlags.Instance);
     var width = ps.GetValue(view);
     return Int32.Parse(width.ToString());
 }

 

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
评论列表

发表评论

评论内容
昵称:
关联文章

C# 获取设置PropertyGrid宽度分隔宽度
C# PropertyGrid基本使用
C# PropertyGrid设置字符串多行文本编辑(MultilineStringEditor)
C# DevExpress CheckEdit设置数据源类型(Y/N字符串Boolean布尔)
Dev表格RepositoryItemLookUpEdit改变值时设置其它的值-原创
Winform界面布局控太多没有出现滚动XtraScrollableControl使用
C# PropertyGrid运行时动态显示隐藏属性
关于LookupEdit选择一纪录不触发EditValueChanged事件
C# DevExpress高级篇 - GridLookUpEdit使用
修改单元格关联更新其它的值,Dev GridViewOnCellValueChanged事件实现
JavaScrip JS获取Image图片实际宽度和高度
FastReport.NET2023-动态报表自动隐藏及调整标签宽度
DevExpress XtraTabControl 添加一个TabPage并设置图标
原创:C#源码 GridMovetor按回车自动跳到下一自动新增记录(www.csframework.com)
C# DevExpress教学 GridLookUpEdit表格下拉组件使用
CSFrameworkV6 - 设置公共字段文本框只读禁用
Winform窗体分隔线怎么设计
【原创】C# Winform Dev自动下拉弹框筛选数据PopupContainerEdit
DevStyle.SetTreeListSelectStyle 设置TreeList只读状态(用于选择)
C# Button自动显示提示信息(ToolTip)