如何在 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
我有一个名为 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