问题描述
PropertyGrid控件可以自定义自己的的属性框,对某些工具的开发非常有用,我在网上找了一些使用心得,大致弄懂了一些使用技巧,但是仍然有些疑问的地方,求教一下高手关于属性中可放入的属性项,我看网上写的都是自定义的class,然后在class中定义固定的属性项,如下示列代码:publicclassAppSettings{privateboolsaveOnClose=true;privatestringgreetingText="迎接应用应用法度!";privateintitemsInMRU=4;privateintmaxRepeatRate=10;privateboolsettingsChanged=false;privatestringappVersion="1.0";publicboolSaveOnClose{get{returnsaveOnClose;}set{saveOnClose=value;}}publicstringGreetingText{get{returngreetingText;}set{greetingText=value;}}publicintMaxRepeatRate{get{returnmaxRepeatRate;}set{maxRepeatRate=value;}}publicintItemsInMRUList{get{returnitemsInMRU;}set{itemsInMRU=value;}}publicboolSettingsChanged{get{returnsettingsChanged;}set{settingsChanged=value;}}publicstringAppVersion{get{returnappVersion;}set{appVersion=value;}}}然后通过AppSettingstest=newAppSettings();PropertyGrid1.SelectedObject=appset;把我们自定义的属性项加到属性控件里面来,但是,下面问题来了:如果我想加入的属性项是未知的,比如会在不同的事件中从不同的数据库表中传来不同的属性项和值,那么我该怎么定义这个类?还有其他方法可以把自定义属性项加进属性控件里面吗?
解决方案
解决方案二:
高手呢。。。555555
解决方案三:
用拼接字符串吧。。这个就类似于在系统中,允许用户添加自定义字段。每添加一个字段,数据库里就会新增一个字段。
解决方案四:
你要的其实是动态实体类,这部分我已经发过相关源码,在这个操作类中有完整的源码记录,如果你有能力看懂的话:核心代码请从FastExpandoDescriptionProvider类开始看,或者你直接研究一个叫TypeDescriptor的类,用这个类的AddProvider方法,添加一个自定义的TypeDescriptionProvider类来实现动态属性。
解决方案五:
引用3楼的回复:
你要的其实是动态实体类,这部分我已经发过相关源码,在这个操作类中有完整的源码记录,如果你有能力看懂的话:分享高效的实体类操作类,分析其优势,可自己写替代EF的ORM框架核心代码请从FastExpandoDescriptionProvider类开始看,或者你直接研究一个叫TypeDescriptor的类,用这个类的AddProvider方法,添加一个自定义的TypeDescriptionP……
我去看看,谢谢啊