关于C#中属性框控件PropertyGrid的使用问题求教

问题描述

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……

我去看看,谢谢啊

时间: 2024-11-29 01:41:17

关于C#中属性框控件PropertyGrid的使用问题求教的相关文章

CDialogBar中编辑框控件Ctrl+c,Ctrl+V不可用的解决办法

CDialogBar中编辑框控件(Edit Control)中进行用Ctrl+C.Ctrl+V进行拷贝,粘贴操作会不可用.其解决办法有二. 其一:资源的Accelerator里的子项删除ID_EDIT_PASTE和ID_EDIT_COPY项就可以了,一般在IDR_MAINFRAME里. 其二:重载PreTranslateMessage方法,其代码如下: BOOL CToolBarDlg::PreTranslateMessage(MSG* pMsg){    if (pMsg->message >

mfc 属性页 列表控件-属性页中添加列表框控件,当我点击下一步时,想让列表显示信息

问题描述 属性页中添加列表框控件,当我点击下一步时,想让列表显示信息 我在用向导模式实现数据库导入,想实现当点击下一步时,能够在列表控件中添加信息,这个信息提示着数据库导入到哪了,与进度条差不多,可是我在OnWizardNext()中添加m_ListCtrl.InsertItem(1,"数据库导入中,请稍后.....");,一开始并不显示着一行信息,等数据库导入完成后才跳出信息,请问我该怎么弄

怎么样在listview控件中使用多行文本框控件?

问题描述 怎么样在listview控件中使用多行文本框控件? 怎么样在listview控件中使用多行文本框控件?文本框控件提交以后怎么对文本换行? 解决方案 重写高度应该是可以的 解决方案二: BCB ListView控件的使用 解决方案三: 设置你listitem的控件的属性就可以了

JS获取页面input控件中所有text控件并追加样式属性_javascript技巧

如题,将使用jquery来在页面加载时获取页面input控件中所有text控件并添加样式. 以前写过的页面上所使用的text控件width属性太小需要改动,改动牵扯页面上所有text的属性,改动每个控件的width感觉会很麻烦,所以就想通过在页面加载的时候将要改动的text找到并添加属性. 首先先写了一个css样式: 复制代码 代码如下: .wid { width:205px; } 在页面加载中所写的代码如下: $("input[type=text]").addClass("

重写UITableViewCell子类中属性的setter方法来实现隐藏或显示该cell中的某些控件

重写UITableViewCell子类中属性的setter方法来实现隐藏或显示该cell中的某些控件 为什么会需要这样子的一种方法来实现隐藏或者显示一个cell中的某些控件呢? 其实,隐藏cell中某些控件可以直接在tableView:cellForRowAtIndexPath:方法中直接实现,我们需要判断外部变量比如bool值来决定是否显示这个控件,但需要额外的代码写在tableView:cellForRowAtIndexPath:方法当中,如果我们把bool值传递给该cell让其自己判断是否

android控件-android中xml设置控件的属性和java文件里设置控件的属性有何不同

问题描述 android中xml设置控件的属性和java文件里设置控件的属性有何不同 android中xml设置控件设置的属性和java文件里设置控件的属性有何不同 是不是java文件里设置可以改变动态的改变控件位置,文字颜色,文字大小 而在xml文件设置之后就无法改变 那具体在java文件设置的属性是如何改变的呢 解决方案 java中可以重新设置去改变xml的设置.但是xml不能去改变java中的设置. 解决方案二: 你可以这样理解,xml设置以后基本不会改变,如果会改变,就要在java里面设

不知道怎么在列表框中显示树形控件节点的信息(包括书名,作者.....)?

问题描述 不知道怎么在列表框中显示树形控件节点的信息(包括书名,作者.....)? 解决方案 用CTreeCtrl控件,你拿到TVN_SELCHANGED对应的信息后,就可以显示了.可以参考下面例子 void CMFC_TreeCRTLDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control

MFC自定义类中数据怎样传递给文本框控件输出

问题描述 MFC自定义类中数据怎样传递给文本框控件输出 在MFC中,自定义了一个视频处理类,目的将处理后的每帧图像输出到picture控件显示并将产生的整型数据通过文本框控件输出.问题是不知怎样将控件变量同类中变量建立联系,使得类中数据可以输出. 解决方案 用ClassWizard去添加关联的成员变量 解决方案二: 鼠标右键点击控件,选择增加一个变量: 或者,直接使用 GetDlgItem(控件名)->SetWindowText() 也行. 解决方案三: 直接获取控件GetDlgItem,然后S

mfc-MFC 登陆界面中怎么用复选框控件记住密码

问题描述 MFC 登陆界面中怎么用复选框控件记住密码 如题 正在做个登陆界面 怎么记住账号和密码啊 试了很多程序都不行 谢谢各位大神! 解决方案 在第一次登陆的时候,用户一定是先输入一个密码的,把这个密码写到一个文件中,然后下次启动的时候判断这个文件是否存在,存在的话直接显示在复选框中 解决方案二: 可以使用ini文件或者注册表保存密码,假设你用ini,大致的代码: CString gamepatch;//读取ini文件的GetPrivateProfileString("GameInfo&quo