Vb.net 在表单中列出所有文本框值

Vb.net 在表单中列出所有文本框值,vb.net,Vb.net,我以前问过一个问题,和这个话题有关。我想知道如何创建一个循环,将表单中的所有textbox.text值相加。这是我得到的回应,而且效果很好 sum = 0 For Each ctrl In Me.Controls.OfType(Of TextBox)() Dim txt As TextBox = DirectCast(ctrl, TextBox) Dim i As Integer = 0 If Integer.Try

我以前问过一个问题,和这个话题有关。我想知道如何创建一个循环,将表单中的所有textbox.text值相加。这是我得到的回应,而且效果很好

sum = 0
    For Each ctrl In Me.Controls.OfType(Of TextBox)()
            Dim txt As TextBox = DirectCast(ctrl, TextBox)
            Dim i As Integer = 0
            If Integer.TryParse(txt.Text, i) Then
                sum = sum + i
        End If
    Next
我想知道的是,如何使用相同的按钮获取表单中每个文本框的值,并将它们全部放在一个列表/数组中

这是一个相当简单的问题,但我就是找不到这个问题的确切语法

另外,如果使用类似的循环,但不使用
list.Add(text)
,则只会中断第一个循环


提前谢谢

只需将解析后的整数添加到
列表(Int32)


不需要强制转换到
TextBox
,因为
ctrl
已经是
TextBox
,这要感谢
of type

的回答。如果我想让它列一个字符串列表呢?@JackOubridge;然后将其声明为
列表(字符串)
并添加
num.ToString()
。但是,如果只有字符串,当然不能在末尾使用
list.Sum
。我会把它们转换成你想要显示的字符串,而不是在存储中。很好,这很好。我有没有办法以不同的形式引用列表中的某些值?例如,我尝试使用
Form1.list(2)
,但它不返回任何内容。您可以通过构造函数(或方法/属性)将此列表传递给其他表单,也可以在
Form1
中将其设为公共属性。但是
Form2
需要访问
Form1
的当前实例,例如通过构造函数将其传递给
Form2
。我更喜欢只传递您需要的内容,所以是列表。所以您建议删除
Integer.TryParse
?@TimSchmelter我想说,当无法解析Text属性时,不清楚应该发生什么。你的解决方案将忽略那些无法解决的问题;这将引发一个异常
输入字符串的格式不正确
@djv:sure,但是应该验证用户输入,甚至使用OP
TryParse
@TimSchmelter right。我宁愿在入口进行验证,也不需要尝试,并且可以在lambda linq的单个链中进行求和。无论如何
Dim listOfTextBox = Me.Controls.OfType(Of TextBox).ToList()
Dim listOfValue = listOfTextBox.Select(Function(e) Integer.Parse(e.Text))
Dim sum = listOfValue.Sum()
Dim listOfTextBox = Me.Controls.OfType(Of TextBox).ToList()
Dim listOfValue = listOfTextBox.Select(Function(e) Integer.Parse(e.Text))
Dim sum = listOfValue.Sum()