有没有办法可以将表单中的每个文本框分配给单个变量?

时间:2016-04-05 13:00:02

标签: vb.net

txtRound.Text
txtDaysWorked.Text
txtPerGallon.Text
txtGasCost.Text
txtMaint.Text
txtParking.Text
txtInsure.Text

我将所有这些文本框都放在vb格式中,而不是检查每一个文本框以确保它们都是正数我想要一种更有效的方法来检查它们与一个变量。一旦声明了该变量,我就会像这样

If (dblVariable > 0) Then

比一长串检查要容易得多

3 个答案:

答案 0 :(得分:5)

您的表单有Controls个属性,该列表包含该表单上的所有控件。

您可以遍历每个控件并检查它是TextBox,如果是,则设置它的Text属性。

如果LINQ可用,您可以将其简化为

For Each control In myForm.Controls.OfType<TextBox>()
    control.Text = "My Value"
Next

重新阅读这个问题,标题有点误导,但我得到你现在所要​​求的。

同样,假设LINQ可用,您应该使用.All扩展名。

If Me.Controls.OfType(Of TextBox)().All(Function(x) Convert.ToDouble(x.Text) > 0) Then
    ' Do something
End If

答案 1 :(得分:0)

这将是一个模糊的答案,因为我是在记忆中工作,但这是我最好的尝试。

总之,我不这么认为。如果你想检查一个变量,你将不得不自己生成该变量。你可以做这个客户端。

或者,如果所有这些控件都在单个表单或其他内容中,您可以循环遍历每个控件以检查每个控件。

答案 2 :(得分:0)

你可以拥有一个获取TextBoxes列表的函数:

Private Function CheckValues(txt As TextBox()) As Boolean
  For Each member In txt 
     If not String.IsNullOrWhiteSpace(member.Text) Then
         Dim number As Integer = CInt(member.Text)
         If number < 0 Then
            Return False 

   Next
   Return true 'all positives
End Function

然后像这样称呼它:

 If CheckValues(new TextBox(){txtRound, txtDaysWorked}) Then
      'case true
  Else
      'case false
  End If