VB.Net使用变量按名称循环控件
我需要设置一些控件的文本 我有一个VB.Net使用变量按名称循环控件,vb.net,loops,controls,Vb.net,Loops,Controls,我需要设置一些控件的文本 我有一个表单和一些复选框和一些文本框 在VBA(如果我有5个名为“TextBox1”、“TextBox2”、“TextBox5”的文本框),我可以使用如下内容: For n = 1 To 5 Me("TextBox" & n).Text = NeededValue Next n 我知道在VB.Net中也可以这样做,但我找不到正确的语法(我也没有找到类似的代码) 我试过使用 Me.Controls() 但我不能这样插入控件名 Me.Controls
表单
和一些复选框
和一些文本框
在VBA
(如果我有5个名为“TextBox1”、“TextBox2”、“TextBox5”的文本框),我可以使用如下内容:
For n = 1 To 5
Me("TextBox" & n).Text = NeededValue
Next n
我知道在VB.Net
中也可以这样做,但我找不到正确的语法(我也没有找到类似的代码)
我试过使用
Me.Controls()
但我不能这样插入控件名
Me.Controls.Find("TextBox" & n, True)
将采用与VBA样式类似的方法
与您的VBA风格类似。对每个使用
,然后使用类型
进行测试,以查找表单中的所有文本框
,如:
For Each myObject1 As [Object] In Me.Controls
If TypeOf myObject1 Is TextBox Then
TryCast(myObject1, TextBox).Text = "NeededValue"
End If
Next
此外:
Dim myText = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5}
For Each btn In myText
btn.Text = "NeededValue"
Next
For i As Int32 = 1 To 5
Dim Txt = Me.Controls.Find("TextBox" & i, True)
If Txt.Length > 0 Then
Txt(0).Text = "blah"
End If
Next
或:
对每个
使用,然后使用TypeOf
进行测试,以查找您的表单中的所有文本框
,如:
For Each myObject1 As [Object] In Me.Controls
If TypeOf myObject1 Is TextBox Then
TryCast(myObject1, TextBox).Text = "NeededValue"
End If
Next
此外:
Dim myText = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5}
For Each btn In myText
btn.Text = "NeededValue"
Next
For i As Int32 = 1 To 5
Dim Txt = Me.Controls.Find("TextBox" & i, True)
If Txt.Length > 0 Then
Txt(0).Text = "blah"
End If
Next
或:
如果有人决定使用更好的(更有意义的)控件名怎么办?这会悄悄地破坏你的代码。不要让您的逻辑依赖于控件名称。@TimSchmelter我使用了“有意义的”控件名称,但我需要显示和获取值,只有其中一些(我没有更好的想法)建议是合适的。您可以将它们分组到容器控件中,如面板
或分组框
。然后很简单:Dim mytextboxs=textBoxPanel.Controls.OfType(Of TextBox.ToArray()
@TimSchmelter它们已经进入了一个面板。我大概有4排。每个都有一个组合框和五个文本框。我需要根据DataTable.Rows.Count(1到4)从DataTable中插入值。如果数据在DataTable中,DataGridView听起来会更合适、更容易。如果有人决定使用更好(更有意义)的控件名称,该怎么办?这会悄悄地破坏你的代码。不要让您的逻辑依赖于控件名称。@TimSchmelter我使用了“有意义的”控件名称,但我需要显示和获取值,只有其中一些(我没有更好的想法)建议是合适的。您可以将它们分组到容器控件中,如面板
或分组框
。然后很简单:Dim mytextboxs=textBoxPanel.Controls.OfType(Of TextBox.ToArray()
@TimSchmelter它们已经进入了一个面板。我大概有4排。每个都有一个组合框和五个文本框。我需要根据DataTable.Rows.Count(1到4)从DataTable中插入值。如果数据在DataTable中,DataGridView听起来会更合适、更容易。我在尝试设置文本时出错。无法将Control()
转换为ComboBox
(我使用了CType(.Find(“CBox\u阶段”&r,True),ComboBox)
returnvalue是一个控件数组。您必须使用第一个控件并将其转换为文本框。我建议您考虑一下处理控件的方法。我不认为这是一种按名称迭代控件的好方法。正如我看到您来自VBA一样,我只能建议您从头开始重新学习VB.NET,忘记VB另一种方法是将所有要更改文本的控件存储在表单中的列表(文本框的列表)中,这样您就可以对每个控件和列表进行更改。当我尝试设置text
时,我会出错。无法将Control()
转换为ComboBox
(我使用了CType(.Find(“CBox\u阶段”&r,True),组合框)
returnvalue是一个控件数组。您必须使用第一个控件并将其转换为文本框。我建议您考虑一下处理控件的方法。我不认为这是一种按名称迭代控件的好方法。正如我看到您来自VBA一样,我只能建议您从头开始重新学习VB.NET,忘记VB另一种方法是将所有要更改文本的控件存储在表单的列表(文本框)中,这样您就可以对每个控件和列表进行更改。