关闭

用反射实现PropertyGrid中的属性动态实现只读、可见

标签: propertyGrid反射只读可见性
550人阅读 评论(0) 收藏 举报
分类:
用反射可以实现动态改变,只读、可见等等,这些属性都可以改变。 

以下两个方法分别实现可见性和只读属性的动态改变: 

void   SetPropertyVisibility(object   obj,   string   propertyName,   bool   visible) 

Type   type   =   typeof(BrowsableAttribute); 
PropertyDescriptorCollection   props   =   TypeDescriptor.GetProperties(obj); 
AttributeCollection   attrs   =   props[propertyName].Attributes; 
FieldInfo   fld   =   type.GetField( "browsable",   BindingFlags.Instance   |   BindingFlags.NonPublic); 
fld.SetValue(attrs[type],   visible); 


void   SetPropertyReadOnly(object   obj,   string   propertyName,   bool   readOnly) 

Type   type   =   typeof(System.ComponentModel.ReadOnlyAttribute); 
PropertyDescriptorCollection   props   =   TypeDescriptor.GetProperties(obj); 
AttributeCollection   attrs   =   props[propertyName].Attributes; 
FieldInfo   fld   =   type.GetField( "isReadOnly",   BindingFlags.Instance   |   BindingFlags.NonPublic   |   BindingFlags.CreateInstance); 
fld.SetValue(attrs[type],   readOnly); 
}

使用时,SetPropertyVisibility(obj,   "名称 ",   true); 
obj指的就是你的SelectObject,   “名称”是你SelectObject的一个属性 

当然,调用这两个方法后,重新SelectObject一下,就可以了。


原文地址:http://bbs.csdn.net/topics/350150747

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

只读的PropertyGrid

转自:http://blog.csdn.net/woshisap/article/details/6976110 3:只读的PropertyGrid     PropertyGrid用来显...
  • Stonethan
  • Stonethan
  • 2015-07-08 15:29
  • 601

自定义propertygrid弹出属性编辑框

看别人写的不详尽,再次总结自己摸索出来的东西: 首先建立一个窗体,该窗体包含你要重新编辑的属性值等内容,下图是我的界面,其中只包含一个richtextbox。 在该窗体后台写代码如下(这两段代码足够...
  • u014722754
  • u014722754
  • 2015-07-28 18:21
  • 1811

C# 设计时动态改变实体在PropertyGrid中显示出来的属性

方法一: /// /// 实体属性处理 /// public class PropertyHandle { #region 反射控制只读、可见...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2015-11-21 12:45
  • 2856

C# 自定义属性在propertyGrid控件中显示

在上篇文章(地址: C# 设计时动态改变实体在PropertyGrid中显示出来的属性)中可以看到:自定义属性的显示是有问题的,那么如何修改呢?代码如下:public class PropertyDi...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2015-11-21 12:45
  • 2480

C#自定义PropertyGrid属性

最近用到了PropertyGrid,原来从来没用到过,拿在手里,一头雾水,经过一段时间研究后,大概理解了Property的使用方法,下面仔细剖析一下。 PropertyGrid控件就是Visual ...
  • jjhua
  • jjhua
  • 2014-04-07 13:40
  • 15985

C# 可以利用反射给只读属性赋值吗?

结论:可以 验证demo如下: using System; using System.Collections.Generic; using System.ComponentModel; using S...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2015-05-06 19:07
  • 2205

propertygrid在其属性面板中加载json对象带函数的属性或者事件

如何在propertygrid的url加载json对象带函数的属性或者事件? 由于propertygrid的url加载json对象时,会将里面的属性或者事件所对应的函数解析成字符串,所以这需要处理该函...
  • txp1993
  • txp1993
  • 2015-03-02 15:03
  • 1030

PropertyGrid控件下拉列表

把别人的例子稍做了一下修改,部分内容没看懂,但程序可以运行,如果有什么错误或不当之处,请指教!   1 /// 2 /// 一.自定义一个特性类L...
  • Andeewu
  • Andeewu
  • 2013-09-21 13:42
  • 2012

动态可订制属性的 PropertyGrid

文章转载,原文来自:http://blog.csdn.net/akron/article/details/2750566 在VB6, VC++, C#.net 里都可以见到一个属性设计器,用...
  • junxingtx
  • junxingtx
  • 2017-12-13 20:48
  • 743

EasyUI 属性网格

属性网格(propertygrid)为用户提供李露兰和编辑属性的接口。属性网格是内联编辑的数据网格。它相当容易使用。用户可以很容易就创建一个可编辑属性的分层列表和表示任何数据类型的项目。属性网格带有内...
  • qq_27626333
  • qq_27626333
  • 2016-08-01 19:59
  • 1196
    个人资料
    • 访问:779次
    • 积分:14
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档