VB.NET - 有没有办法获取面板的字符串名称并找到相关的面板?

时间:2014-03-12 12:02:52

标签: vb.net

我在VB.NET工作,而且我很新。我正在搜索面板上的每个按钮:

For Each _x_ As Control In _y_.Controls

我将y作为字符串名称,有没有办法将此字符串转换为实际的面板或控制组,因此我不必为每个单独编码?

有更简单的方法吗?

private function return_button(ByVal y As integer)
Dim z As String = R_ + ToString(y)

(z现在是我正在使用的面板名称,但它不是面板本身的字符串)

2 个答案:

答案 0 :(得分:1)

所有控件都在其父级Controls集合中引用。因此,如果您要查找的面板是您表单的子级,则可以在表单的Controls集合中查找。 Controls集合由控件的名称编制索引,因此您可以通过名称轻松检索它们,如下所示:

Dim z As String = ...
Dim p As Panel = DirectCast(Me.Controls(z), Panel)

答案 1 :(得分:0)

我找到了解决这个问题的方法。无论出于何种原因,它都不允许我将变量转换为实例化值,它始终保持为空/无。所以我写道:

Dim p As String = "<String related to the panel I am looking for>"
Dim panel() = Me.Controls.Find(p, true)

现在我可以通过调用来证明面板是相同的:

MsgBox(panel(0).GetHashCode = <panel name>.GetHashCode)

现在确定它们是同一个对象,所以我做了一个for循环,它与面板一起工作。现在我可以遍历整个TabPage并找到此选项卡上的所有面板。这将使我的代码比以前更加简化。谢谢你让我走上了正确的道路,史蒂文。