字符串到Object作为表达式

时间:2013-12-07 02:52:09

标签: vb.net

我有多个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

3 个答案:

答案 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