我需要遍历我的表单的文本框,这些文本框位于面板内。我正试图这样做......
For Each Cntrl As Control In DirectCast(Me.Controls(PanelName), Panel).Controls
next
我需要将面板名称提供给循环的原因是因为我有两个面板存在于两个不同的TabPages中。每个TabPage上都存在一个执行相同功能的按钮,但面板和文本框具有不同的名称。我在一个处理两个TabPage按钮点击的函数中都有循环,因此我需要循环指向右侧面板。
“PanelName”与目标面板的名称匹配,面板为System.Windows.Form.Panel。
我得到“对象引用未设置为对象的实例”。信息。
这不可能吗?
答案 0 :(得分:2)
无需投射:
For Each Cntrl As Control In PanelName.Controls
Next
如果您拥有的只是面板的名称而不是控件参考,那么您至少需要知道哪个TabPage具有该面板:
For Each ctrl As Control In TabControl1.TabPages(1).Controls("panel1").Controls
Next
或者,您可以使用:
Me.Controls.Find(PanelName, True)
以递归方式搜索子控件时按名称返回面板。