【发布时间】:2011-01-14 01:04:34
【问题描述】:
好的,我已经阅读了一些关于使用 PropertyGrid 和集合的问题。但是,我很难理解[TypeConverter] 如何/是否对我有用。我读过 MSDN 放出的那段小广告,坦率地说,这个可怜的自学成才的程序员有点欠缺。
所以,这就是我所拥有的。首先是一个集合:
[Serializable]
public List<ModuleData> Modules
{ get { return modules; } }
private List<ModuleData> modules;
集合中的对象:
[Serializable]
internal class ModuleData : IEquatable<ModuleData>
{
// simple data class with public properties
// to display in the propgrid control
}
我有一个 ListView 控件,其中包含描述 ModuleData 对象和 BatchData 对象的项目。当我从 ListView 中选择 BatchData 项时,PropertyGrid 将按预期显示集合编辑器。有没有办法将集合编辑器限制为仅在 ListView 控件中列出的任何 ModuleData 项?理想情况下,我不希望将 BatchData 项(来自 ListView)添加到 BatchData 集合中 - 特别是因为集合不是 BatchData 对象类型的“类型化”。
如果需要更多代码示例,我将非常乐意编辑一些 sn-ps。
为了清楚起见,ModuleData 是一个自定义类,它包含在指定程序集中实例化类所需的数据。它包含的只是字段和公共/内部属性。我想做的是使用与属性网格控件组装的集合编辑器将 ModuleData 对象添加到 BatchData Module 集合。符合添加条件的 ModuleData 对象列在 ListView 控件中。
编辑:删除了: List<ModuleData> 继承。
更新:如果我要创建自定义集合编辑器,这是否意味着我正在构建自己的自定义表单/对话框?然后基本上通过 UITypeEditor 的属性和继承向 propertygrid 提供信息以显示我的自定义集合对话框?
【问题讨论】:
-
我已经尝试添加一些想法,但对于您想要发生的确切,我仍然很模糊。
-
@Marc - 已编辑,希望有所澄清。
-
@Marc - 为了完成我的任务,我想我必须改变这个问题,这不是犹太教(根据我在 meta 中读到的内容)。所以,我会接受你的回答——我不喜欢松散的结局。 ;) 它确实帮助我研究了不同的途径,所以这是一个可行的答案!
-
耻辱,我一直在努力...查看更新。
标签: c# propertygrid collectioneditor