我有多个TextBox控件Monday
,它们将保存一个值。我希望能够将所有Monday
文本框相加,并将该值存储为monTotal
。我收到一条错误消息,指出字符串无法转换为整数。
For i As Integer = 1 To rowCount Step 1
Dim var As Object
var = "txtMonday" & i & ".Text"
monTotal = monTotal + CInt(var)
Next
答案 0 :(得分:1)
您尝试获取文本框的引用的方式不是VisualBasic .NET的惯用语。
var = "txtMonday" & i & ".Text" ' this is not a way to obtain a reference to the text box's text
虽然可以使用反射来完成类似的事情,但是重构代码以使用文本框数组会更好。
由于您可能正在使用Windows窗体,因此您可以使用以下内容实现逻辑以在窗体上查找您感兴趣的文本框控件:
' assuming container is the control that contains the text boxes
For Each ctrl In container.Controls
If (ctrl.GetType() Is GetType(TextBox)) Then
If ctrl.Name.StartsWith("txtMonday") Then
Dim txt As TextBox = CType(ctrl, TextBox)
monTotal = monTotal + CInt(txt.Text)
End If
End If
Next
上面的示例假设所有txtMonday..
文本框都放在名为container
的控件中。这可能是表格本身,或其他一些小组或表格。
答案 1 :(得分:0)
如果所有文本框都存在于表单上,并且没有任何文本框用于其他文本工作,则可以使用此文本框。您可以将包含您要查找的值的所有文本框放在一个单独的容器中,并像下面一样获取它们,但是使用该控件集合。
Dim amount As Double = 0
For Each tb As Textbox In Me.Controls.OfType(Of Textbox)()
amount += Convert.ToDouble(tb.Text)
Next
答案 2 :(得分:0)
Dim monTotal as double=0
For Each ctrl As Control In Me.Controls
If TypeOf ctrl Is TextBox AndAlso ctrl.Name.StartsWith("txtMonday") Then
monTotal = monTotal + val(ctrl.Text)
End If
Next