Skip to content

ParentControls 类

ParentControls对象是与UserControl位于同一容器中的其他控件集合——其在宿主窗体、框架或页面上的同级控件。可在UserControl内部通过UserControl.ParentControls访问,使控件能够发现和交互周围的其他控件,而无需获得显式引用。

默认情况下,每个项在返回时包装在其宿主Extender中——容器逐控件的适配器,在控件自身接口之上添加布局属性(TopLeftTagVisibleName等)。将ParentControlsType设置为vbNoExtender可改为接收裸控件。集合本身为只读:不能通过它添加或移除项。

vb ' 在UserControl内部:打印每个同级控件的名称和类型。 Dim ctl As Object For Each ctl In UserControl.ParentControls Debug.Print ctl.Name, TypeName(ctl) Next ctl

成员

Count

返回集合中的控件数量。

语法:object.Count

object
必需 求值为ParentControls对象的对象表达式。

值为LongItem的有效索引范围从1到Count

Item

按从一开始的位置从集合中返回单个控件。

语法:object.Item( index )

object
必需 求值为ParentControls对象的对象表达式。
index
必需 给出要返回控件从一开始位置的Long。必须在1和Count之间;否则将发生错误。

ItemParentControls的默认成员,因此以下两行等效:

vb Set ctl = UserControl.ParentControls.Item(1) Set ctl = UserControl.ParentControls(1)

结果类型为Object,因为容器可能包含任何类型的控件。返回的引用是否公开宿主提供的Extender属性由ParentControlsType决定。

ParentControlsType

返回或设置每个项是包装在宿主Extender中返回还是作为裸控件返回。

语法:object.ParentControlsType [ = value ]

object
必需 求值为ParentControls对象的对象表达式。
value
ParentControlsType值:
bExtender(1)
项在宿主的Extender中包装返回,公开容器提供的布局属性(TopLeftVisibleNameTag等)以及控件的自身接口。这是默认值。
bNoExtender(�)
项作为裸控件返回,不带Extender包装。当不需要Extender的额外属性,或控件的自身接口定义了会被遮蔽的成员时使用。

更改ParentControlsType影响后续从ItemFor Each迭代的读取;已获取的引用不会被追溯重新包装。

For Each 迭代

ParentControls对象可以使用For Each...Next语句进行迭代,按宿主返回的顺序依次产生每个同级控件。隐藏的_NewEnum成员提供枚举器,不从用户代码直接调用。

vb Dim ctl As Object For Each ctl In UserControl.ParentControls Debug.Print ctl.Name Next ctl

twinBASIC及其LOGO版权为作者"韦恩"所有