Vb.net 在表单中列出所有文本框值
我以前问过一个问题,和这个话题有关。我想知道如何创建一个循环,将表单中的所有textbox.text值相加。这是我得到的回应,而且效果很好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
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,但是应该验证用户输入,甚至使用OPTryParse
@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()