我试图获得一个总体了解如何使用ICustomTypeDescriptor,TypeDescriptionProvider,。和UITypeEditor改变如何PropertyGrid显示和接口有一个对象。

可以有人告诉我如果这是正确的,或者如果我错过了任何重大的概念或分?我真的只是想了解为什么当,你会使用的每一类。

ICustomTypeDescriptor

  • 执行这一界面类中完全复盖地性质的一类,并取代他们的PropertyDescriptors返回的ICustomTypeDescriptor.GetProperties()

TypeDescriptionProvider

  • 用于延长现有的特性的一类
  • 一TypeDescriptionProvider是所附的一类通过TypeDescriptionProvider属性
  • 该GetTypeDescriptor()方法TypeDescriptionProvider返回ICustomTypeDescriptor要 所附的 到现有的性质的类型。
  • PropertyGrid将显示两性之类的找到通过反射特性添加到类通过TypeDescriptionProvider

  • 转换的类型之间
  • 在术语的使用PropetyGrid用于转换之间复杂的类型和基本类型,可以显示的/编辑的财产的网格。
  • 该GetStandard值的方法。还可以被用来显示可能值的列表中propertygrid

UITypeEditor

  • 定义一个自定义的编辑操作性的一个复杂的类型。
  • 相关的财产通过一个属性。

所以ICustomTypeDescriptor一TypeDescription提供者是使用增加/修改/替换的整个性质的对象。。和UITypeEditor应用于个人特性和控制这些具体属性的接口。

有帮助吗?

解决方案

调整:

  • TypeDescriptionProvider

    • 仍然 替换 元数据(不延伸)
    • 也可以加入进 TypeDescriptor.AddProvider
    • 可以适用每种类型,以及每个实例,使得能够适用于清单不具有实现 ITypedList
  • TypeConverter

    • 对于 PropertyGrid, 这也是该机构用来获取元数据;注意, ExpandableObjectConverter 简单地代表 TypeDescriptor.GetProperties, 但这不是总的情况
    • 还负责重建不可改变的对象(例如结构)的变化
  • UITypeEditor

    • 还负责绘画预览框在 PropertyGrid

其他:

  • IExtenderProvider - 追加 属性;这可能是什么,你变得混淆 TypeDescriptionProvider
  • ITypedList -广泛的双胞胎 ICustomTypeDescriptor, ,但是对于名单;可以避免由使用 TypeDescriptionProvider 并非象索引的任何 IList, 即 public T this[int index] {get;}
  • IListSource -提供间接之间的一个数据源和数据;例如,一个 DataTable 实现了 IListSource, 返回 DefaultView 当要求
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top