好的,我已经阅读了一些关于使用 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 对象类型的“类型化”。
如果需要任何进一步的代码示例,我将非常乐意编辑其中的一些片段。
为清楚起见,ModuleData 是一个自定义类,它保存在指定程序集中实例化类所需的数据。它包含的只是字段和公共/内部属性。我想做的是使用与属性网格控件组装的集合编辑器将 ModuleData 对象添加到 BatchDataModule
集合。符合添加条件的 ModuleData 对象列在 ListView 控件中。
编辑:删除了: List<ModuleData>
继承。
更新:如果我要创建自定义集合编辑器,这是否意味着我正在构建自己的自定义表单/对话框?然后基本上为propertygrid提供信息以通过UITypeEditor的属性和继承来显示我的自定义集合对话框?