- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.net PropertyGrid动态生成属性页
对于这几个月的这个项目,一直想做个总结,但是鉴于本人记性之差,总是将这件事想起又忘记,终于在这个月工作的最后几天有了几天的空闲,把这个经验好好的记录下来。PropertyGrid,.net框架下的一个控件,这是一个软件升级的项目,原来的软件用的是C++,控件用的还是第三方,这次升级到visual studio .net4.0版本,原以为.net的东西用起来不会费劲的,没想到想要实现项目需要的效果还真没那么简单。由于需要,我这里主要是为了能动态的生成属性页,还要带能动态生成下来菜单,所以今天主要从这方面总结。首先定义一个属性类://单条属性类 public class XProp { private string theId = ; //属性Id,我的项目中需要,大家可以忽略 private string theCategory = ; //属性所属类别 private string theName = ; //属性名称 private bool theReadOnly = false; //属性的只读性,true为只读 private string theDescription = ; //属性的描述内容 private object theValue = null; //值 private System.Type theType = null; //类型 private bool theBrowsable = true; //显示或隐藏,true为显示 TypeConverter theConverter = null; //类型转换 public string Id { get { return theId; } set { theId = value; } } public string Category { get { return theCategory; } set { theCategory = value; } } public bool ReadOnly { get { return theReadOnly; } set { theReadOnly = value; } } public string Name { get { return this.theName; } set { this.theName = value; } } public object Value { get { return this.theValue; } set { this.theValue = value; } } public string Description { get { return theDescription; } set { theDescription = value; } } public System.Type ProType { get { return theType; } set { theType = value; } } public bool Browsable { get { return theBrowsable; } set { theBrowsable = value; } } public virtual TypeConverter Converter { get { return theConverter; } set { theConverter = value; } } } 我举一个例子:private string strdemo;[DescriptionAttribute(用于举例说明),??CategoryAttribute(公有属性),?DefaultValueAttribute(“测试属性”),ReadOnlyAttribute(false),BrowsableAttribute(true),??TypeConverter(typeof(MyComboTypeConvert))]??public?string strDemo??{???get?{?return?strdemo;?}???set?{?strdemo?=?value;?}??}??这是个写死的属性,那在我的项目中,根据对象的不同,会需要生产不同的属性页,所以需要一个可以动态生成的属性页,将上述这个一般属性定义,利用XProp类,写成:Private XProp newXpro = new XProp();newXpro.Category = ”公有属性”;newXpro.Name = ” strDemo”;newXpro.Id = A;newXpro.Description = “用于举例说明”;newXpro.ReadOnly =false;newXpro.Value = “测试属性”;newXp
原创力文档


文档评论(0)