我有6个不同的文本框,名称相似:
txtBox1, txtBox2....txtBox6
我也有一个阵列:
dim intValue (0 to 5) as Integer
现在我想使用for循环将每个文本框中的值分配给数组中的相应空格,将循环计数器的值与字符串“txtBox”连接起来,并使用检索数据。文本方法。
这是我的代码:
For count As Integer = 0 To 5
Dim strCount As String = count
Dim strTxtBox As String = "txtBox" & strCount
intValues(count) = Convert.toInt32(strTxtBox.Text)
Next
问题是字符串名称不指向txtBox1,txtBox 2等。
提前感谢您的帮助。
答案 0 :(得分:1)
如果要访问控件名称,则必须使用“名称”属性。
你应该尝试类似的东西:
For i As Integer = 0 To 5
For Each c As Control In Controls
If c.Name = "txtBox" & i Then
intValue(i) = Convert.ToInt32(c.Text)
End If
Next
Next i
上面的代码只是一个例子,但它应该适合你。 无论如何,您可以编写更好的代码来检查控件的类型,或者使用不同的循环逻辑,但基本的想法是,如果您想在代码中使用控件的名称,则必须使用NAME属性。
答案 1 :(得分:1)
strTxtBox
是一个字符串,仅此而已。如果没有特殊代码,则无法通过String引用控件名称。我不是沿着那条路走,而是创建一个数组并用文本框填充它:
Dim txtBoxes As TextBox() = {txtBox1, txtBox2, txtBox3, txtBox4, txtBox5, txtBox6}
Dim intValues As Integer(0 To 5)
For count As Integer = 0 To 5
intValues(count) = Convert.ToInt32(txtBoxes(count).Text)
Next
答案 2 :(得分:0)
最简单的方法是遍历Controls
的内容以查找文本框。你可以:
使用.Tag
属性标记文本框以标识它们,或者如其他答案所示,使用.Name
属性。
如果表单上有很多其他控件,并且它们可能不正常,您还可以检查每个控件以查看它是否为文本框。假设它们的顺序相反,因为Controls
数组从头到尾。
Dim nums() As Integer = {10, 20, 30, 40, 50, 60}
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf (ctrl) Is TextBox Then
ctrl.Text = nums(Val(ctrl.Name(ctrl.Name.Length - 1)) - 1)
End If
Next
您还可以通过编程方式实例化一组文本框,但您必须手动设置所有展示位置等。
当我对下面的答案发表评论时,您可能需要使用DirectCast将ctrl
投射到System.Web.UI.Control
以访问.Name
。