title: ParentControls parent: VBRUN Package nav_order: 17 permalink: /tB/Packages/VBRUN/ParentControls/
ParentControls 类
ParentControls对象是与UserControl位于同一容器中的其他控件集合——其在宿主窗体、框架或页面上的同级控件。可在UserControl内部通过UserControl.ParentControls访问,使控件能够发现和交互周围的其他控件,而无需获得显式引用。
默认情况下,每个项在返回时包装在其宿主Extender中——容器逐控件的适配器,在控件自身接口之上添加布局属性(Top、Left、Tag、Visible、Name等)。将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对象的对象表达式。
值为Long。Item的有效索引范围从1到Count。
Item
按从一开始的位置从集合中返回单个控件。
语法:object.Item( index )
- object
- 必需 求值为ParentControls对象的对象表达式。
- index
- 必需 给出要返回控件从一开始位置的Long。必须在1和Count之间;否则将发生错误。
Item是ParentControls的默认成员,因此以下两行等效:
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中包装返回,公开容器提供的布局属性(Top、Left、Visible、Name、Tag等)以及控件的自身接口。这是默认值。
- bNoExtender(�)
- 项作为裸控件返回,不带Extender包装。当不需要Extender的额外属性,或控件的自身接口定义了会被遮蔽的成员时使用。
更改ParentControlsType影响后续从Item和For 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