VB.Net Form DirectCast on Forms.Panel



我需要循环遍历表单的文本框,这些文本框位于面板内。我试着这样做....

For Each Cntrl As Control In DirectCast(Me.Controls(PanelName), Panel).Controls
next

我需要将面板的名称提供给循环的原因是因为我有两个面板存在于2个不同的tabpage中。每个TabPage上都有一个执行相同功能的按钮,但是面板和文本框有不同的名称。我在处理TabPage按钮单击的函数中有循环,因此我需要循环指向右面板。

"PanelName"匹配目标面板的名称,面板是System.Windows.Form.Panel。

我得到"对象引用未设置为对象的实例"消息。

这难道不可能吗?

无需强制转换:

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)

在递归搜索子控件时按名称返回面板。

最新更新