如何在 Visual Basic .NET 中使用其名称获取控件?

How to obtain a control using its name in Visual Basic .NET?

我有一个名为 txtCod1 的文本框,我想在单击按钮时获取它的文本,但我想使用引用它的变量来获取它们的属性。

Private Sub btnAceptar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click

    Dim txtDato As TextBox
    txtDato = Me.Controls.Item("txtCod1")
    MsgBox(txtDato.Text, MsgBoxStyle.Information)

End Sub

当我执行这段代码时,returns 出错。

您需要筛选出您需要的控件。 最快的解决方案是使用 Linq。 所以导入 System.Link 并执行:

    Dim textBoxes = Controls.OfType(Of TextBox).Where(Function(c) c.Name.StartsWith("txtCod"))

    For Each tb In textBoxes
        MsgBox(tb.Text)
    Next

OfType(Of...) 方法 returns 仅可转换为您指定类型的元素。

编辑

如果表单上只有 txtCod... 个文本框,您需要调整名称限制或删除 .Where(...) 调用。 如果你需要找到名字中不在开头的部分,你可以使用 c.Name.Contains("bla")

抱歉,我找到了解决方案... 我试过这个并且有效:

If Me.Controls.Find("txtCod1", True).Count = 1 Then
    Dim b As TextBox = Me.Controls.Find("txtCod1", True)(0)
    MsgBox(b.Text)
End If