1

我需要遍历位于面板内的表单的文本框。我正在尝试这样做......

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

next

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

“PanelName”与目标面板的名称相匹配,面板属于 System.Windows.Form.Panel。

我得到“对象引用未设置为对象的实例”。信息。

这不可能吗?

4

1 回答 1

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)

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

于 2013-05-09T21:21:38.370 回答