返回首页

简介
系统属性网格控制是一个非常有用和有效的的控制,显示不同类型的数据。但这种控制有一个复杂的接口提供的数据(见)。本文介绍了从系统属性网格提供的数据显示,更方便的接口派生的控制。
控制Puma.Control.PropertyGrid Windows的控制
控制提供了一个更方便的用户界面,浏览System.Windows.Forms.PropertyGrid控制对象的属性和扩展其功能。
备注:
要使用属性网格,您将创建一个父控制Puma.Controls.PropertyGrid类的新实例。调用setContent方法,作为一个参数,接口,描述了一个项目,以显示属性的根传递。在属性网格中显示项目的接口描述

当用户要显示在属性网格中的一个项目,他们要为这些项目的实施这些接口。对于接口的实现的例子,看到Puma.Controls.PropertyGrid.PGITemplates命名空间。这些模板之一作为数据提供者使用。IPropertyGridItem接口
描述显示项目的基本信息。
属性:IPropertyGridItemType类型{}
获取接口,介绍了该项目的值的类型。
如果这个属性返回null,然后在属性网格中不使用此项目是失去了一些功能。 (例如,验证更改的项目,枚举值,依此类推。)字符串名称{}
获取该项目的名称。字符串DisplayedName {}
获取可以在PropertyGrid中显示的名称。字符串值,设置}
获取或设置在该项目的值的字符串表示。字符串文件{}
获取的项目,可显示在底部的属性网格选择项目时的描述。BOOL的IsReadOnly {}
获取一个值,该值指示该属性是否为只读。如果只读,属性网格禁止改变该项目的价值。IPropertyGridChildItems童车{}
获取该项目的子项。见IPropertyGridChildItems。IPropertyGridItem家长{}
获取该项目的父项目。IPropertyGridChildItems接口
介绍一个项目的子项。
备注:
参见IPropertyGridChildItemsFragment。
方法:IPropertyGridChildItemsFragment此[字符串名称] {得到}
获取指定名称的适当片段。接口IPropertyGridChildItemsFragment
备注:
介绍一个项目的子项的子集。在属性网格中的每个项目可能有遇到不止一次(项目数组)的儿童。所有被分配在同一个片段。即使子项不存在,但在孩子收集可以被添加到它,这个项目是创建一个单独的片段。
属性:IPropertyGridItem [INT指数]
获取其指定的索引相应的子项。字符串IPropertyGridItem DisplayedName
获取可以在不同的上下文中显示了PropertyGrid的的名称。
上下文:
的添加/删除项时出现在上下文菜单(用户点击鼠标左键在网格上项目),这个属性被选中的文字定义,可以添加或删除的项目名称。BOOL IsCanInsert {}
从Puma.Collections.IShred接口继承。片段可以被添加到项目。BOOL IsCanRemove {}
从Puma.Collections.IShred接口继承。项目可以从片段中删除。
方法: IPropertyGridItem InsertItem(INT指数)
此方法创建并插入项目,如果可能的话,子项的集合,并返回该项目。如果返回为空,子项失败,被插入。IPropertyGridItem RemoveItem(INT指数)
此方法删除一个项目,如果可能的话,从子项的集合,并返回该项目。如果返回为空,子项并没有被删除。IPropertyGridItemType接口
介绍的项目类型。
备注:
项目类型影响PropertyGrid中的行为,当用户设置一个新的价值的项目,这也影响如何显示此值。
属性:的System.Type SystemType {}
返回该项目价值的系统类型。BOOL IsComplexType {}
返回该项目是否有一个复杂的类型(可以包含子项)。BOOL IsComparable {得到}
返回该项目是否有min和max指定的值。在这个真正的财产的情况下,SimpleType的财产应该返回ISimpleTypeCompared的接口。BOOL IsEnum {}
返回项的值是否有一个标准值集合。的simpleType属性,此属性为true的情况下,应返回ISimpleTypeEnum接口。BOOL IsParseable {}
返回该项目价值的系统类型是否有一个Parse方法(字符串StrVal)。见SystemType财产。IMinMaxOccurs MinMaxOccurs {}
返回,可以在父对象中遇到多少次的项目。见IMinMaxOccurs接口。对象SimpleType的{}
返回null,或有以下几种类型之一:ISimpleTypeCompared,ISimpleTypeEnum,或ISimpleTypeString的对象。
备注:如果该项目价值已指定的值的最小值和最大值,那么这个属性应该返回ISimpleTypeCompared的接口。如果该项目的价值有一个标准值的集合,那么这个属性应该返回ISimpleTypeEnum的接口。如果该项目的价值有一个字符串类型和字符串的最大长度可能的限制,这个属性应该返回ISimpleTypeString接口。如果这些情况都不适用,则返回null。 的DefaultValue {得到}
返回的默认项的值的字符串表示形式。如果该项目没有一个,返回null。接口IMinMaxOccurs
定义的项目,可以在父遇到多少次。
属性: INT的minOccurs {得到}
返回的最低数量的项目可在父项目中遇到的次数。如果一个价值?返回,然后的minOccurs被忽略。INT的maxOccurs {得到}
返回的项目可在父项目中遇到的最大倍。如果一个价值?返回,然后的maxOccurs被忽略。ISimpleTypeCompared接口
定义为项目指定值的最小值和最大值是什么。
属性:对象MINVALUE {}
定义的项的值指定的最小值。返回的对象应具有同一类型的项目。如果返回null,然后MINVALUE被忽略。对象MaxValue的{}
定义为项目的值指定的最大值。返回的对象应具有同一类型的项目。如果返回null,然后MaxValue的被忽略。ISimpleTypeEnum interfaec
定义为项目的价值标准值集合。
属性:Puma.Collections.NameValueCollectionUnique NameValuePares {}
返回的标准值的名称/值对物品的价值。在此一双,名称显示在相应的下拉列表中的项目,设置相应的名称已被选中时,作为该项目价值和价值。ISimpleTypeString接口
定义什么字符的最小和最大数量的物品的价值,如果它接受字符串类型。
属性:INT MinLength {}
接受该项目的价值的字符的最小数目。 ??返回,然后MinLength被忽略。INT的MaxLength {}
接受该项目的价值的字符的最大数量。 ??返回,然后MAXLENGTH被忽略。这些接口如何使用属性网格
字符串IPropertyGridItem.DisplayedName
字符串,显示在相应的项目属性网格窗口的项目名称。字符串IPropertyGridItem.Value??项目值在相应的项目属性网格窗口显示的字符串。设置??字符串值,当用户改变它在属性网格中设置该项目。字符串IPropertyGridItem.Documentation
字符串,选择相应的项目时显示在属性网格的底部。BOOL的IsReadOnly

值是指相应的项目时,可以由用户更改。字符串IPropertyGridChildItemsFragment.DisplayedName

时出现的添加/删除项目上下文菜单(即用户点击鼠标左键网格上项目),这个值被选中的文字定义,可以添加或删除的项目名称。BOOL IPropertyGridChildItemsFragment.IsCanInsert
{五}
当出现的添加/删除项目上下文菜单(即用户点击鼠标左键父电网项目),此值确定添加的项目。如果返回true,这个项目是显示在上下文菜单中添加项目列表。BOOL IPropertyGridChildItemsFragment.IsCanRemove
{中六}
当出现的添加/删除项目上下文菜单(即用户点击鼠标左键父电网项目),此值确定项目可去除。如果返回true,这个项目是显示在上下文菜单列表中删除项目。的System.Type IPropertyGridItemType.SystemType
如果此属性不为空和IPropertyGridItemType.IsParsable是真实的,发生以下情况:当用户更改在属性网格中的一个项目的值,这个新的值是这种类型,即验证的属性网格定义的值是否进入下降到这种类型的有效值范围。如果没有,那么最近更改的值将被取消,并显示旧。另见:IsParsable。BOOL IPropertyGridItemType.IsComplexType {}
{七}
如果这个属性返回true,并假定该项目可以包含子项,它会显示在属性网格作为一个可扩展的的项目。BOOL IPropertyGridItemType.IsComparable {得到}
如果这个属性返回true,然后SimpleType的应该返回ISimpleTypeCompared接口。当用户更改在属性网格中的一个项目的值,这个新的值是由ISimpleTypeCompared接口,即验证,属性网格定义如果这个输入的值落在所提供的接口范围内。此外,该值类型应满足IsParseable的条件。如果输入值的有效值范围以外的瀑布,然后输入值将被取消,并显示旧值。BOOL IPropertyGridItemType.IsEnum {}

如果这个属性返回true,则SimpleType的回报ISimpleTypeEnum接口。这个返回值应该包含名称/值对。该值应相同类型的项目类型。每个名称添加到下拉列表中,当用户更改项目的值显示。当用户选择适当的名称,该项目的值更改为相应的值选定的名称。BOOL IPropertyGridItemType.IsParseable {}
见的System.Type IPropertyGridItemType.SystemType。对象IPropertyGridItemType.SimpleType {}
当物品的价值字符串类型,此属性返回的ISimpleTypeString接口,当用户更改该项目​​的价值,它是由这个接口,即验证,接口检查,如果该字符串不超过定义的长度它。如果超过长度,新的值将被取消,并恢复旧值。另见:IsComparable和IsEnum性能。 IMinMaxOccurs IPropertyGridItemType.MinMaxOccurs
不使用,因为孩子可以添加或从项目中删除项目的数量是由IPropertyGridChildItemsFragment.IsCanInsert和IPropertyGridChildItemsFragment.IsCanRemoved属性控制。
感谢阿尼伯格为他在这篇文章的写作的贡献。

回答

评论会员:gfazzola 时间:2011/12/07
这是一个健奥(大)componente的项目。恭喜!!

吉列尔莫Fazzolari
评论会员:VirginF 时间:2011/12/07
obrigado
评论会员:游客 时间:2011/12/07
VirginF:嗨,我尝试使用您的XmlGrid。我的工作在WinXPSP2的。使用VisualStudio2005,。NET框架2.0我启动项目,然后我填充PropertyGrid中,然后单击"打开"集合编辑器",查看我收到此错误的汽车列表(例如)"当我3点:索引1的范围。参数名:索引出现这种情况的方法:CollectionEditor:CreateCollectionForm()就行了:collectionForm.Controls[1]按新的EventHandler(OK_Click);谢谢你的回答。维尔