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

时间:2017-11-11 22:15:56

标签: vb.net controls

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

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

当我执行此代码时,它会返回错误。

2 个答案:

答案 0 :(得分:1)

您需要过滤掉所需的控件。 最快的解决方案是使用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...)方法仅返回可以强制转换为您指定类型的元素。

修改

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

答案 1 :(得分:1)

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

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