假设我有一个自定义控件类继承了" Control" winforms中的课程。我在运行时生成这些控件并将它们堆积到面板的控件集合中。
现在我想迭代这些自定义控件并执行特定于其类的子。首先想到的是,我想迭代一下面板的控件集合,但这并不好,因为控件类型没有找到我想要的子集。
显然,我可以将它们存储在具有相应类的重复列表中。问题是,是否有更好的方法来执行此操作?就像在各种脚本语言中一样,我可以选择现场转换类型或将整个集合转换为强制转换引用。
答案 0 :(得分:0)
您可以遍历Control
中的所有Panel
。使用TryCast
运算符确定是否有自定义控件的实例,如果是,请调用您的方法。
这样的事情:
For Each c In panel.Controls
Dim control As YourCustomControl = TryCast(c, YourCustomControl)
If Not control Is Nothing Then
control.YourMethod
End If
Next