Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 是否可以为每个语句向传递一组文本框名称_Vb.net_Forms_Foreach_Textbox - Fatal编程技术网

Vb.net 是否可以为每个语句向传递一组文本框名称

Vb.net 是否可以为每个语句向传递一组文本框名称,vb.net,forms,foreach,textbox,Vb.net,Forms,Foreach,Textbox,我有一个包含7个文本框的表单,我喜欢通过使用“For Each”语句来处理其中的值,因此我使用了以下代码,其中我定义了一个包含文本框名称的字符串数组,并将其成员传递给“me.controls()”,在该语句的行上触发错误:“对象引用未设置为对象的实例” 实现这一点的最佳方法是什么?谢谢当您可以传递文本框时,为什么要传递文本框的名称呢?假设您在设计器中添加了文本框,则会为每个文本框生成一个字段,因此请使用这些字段: Dim文本框={sa,sb,sc,sd,ss,sr,st} 对于文本框中的每个文本

我有一个包含7个文本框的表单,我喜欢通过使用“For Each”语句来处理其中的值,因此我使用了以下代码,其中我定义了一个包含文本框名称的字符串数组,并将其成员传递给“me.controls()”,在该语句的行上触发错误:“对象引用未设置为对象的实例”


实现这一点的最佳方法是什么?谢谢

当您可以传递
文本框
时,为什么要传递
文本框的名称呢?假设您在设计器中添加了
文本框
,则会为每个文本框生成一个字段,因此请使用这些字段:

Dim文本框={sa,sb,sc,sd,ss,sr,st}
对于文本框中的每个文本框
'在此处使用文本框。
下一个

当您可以传递
文本框
时,为什么要传递
文本框的名称呢?假设您在设计器中添加了
文本框
,则会为每个文本框生成一个字段,因此请使用这些字段:

Dim文本框={sa,sb,sc,sd,ss,sr,st}
对于文本框中的每个文本框
'在此处使用文本框。
下一个

除了根据JMCILHINEY的建议从文本框本身(而不是它们的名称)创建一个数组外,我建议您在尝试对它们进行计算之前,使用来确定用户输入的乘数和等级是否确实是有效的双倍。这将防止错误输入导致运行时异常:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim grades() As TextBox = {sa, sb, sc, sd, ss, sr, st}

    Dim x As Double
    Dim strX As String = InputBox("what is the multiplier", "Enter Value", "1")

    If Double.TryParse(strX, x) Then
        For Each s In grades
            Dim grade As Double
            If Double.TryParse(s.Text, grade) Then
                s.Text = Math.Round(grade * x)
            End If
        Next
    Else
        MessageBox.Show("Invalid Multiplier")
    End If
End Sub

除了按照JMCILHINEY的建议从文本框本身(而不是它们的名称)创建数组外,我建议您在尝试对用户输入的乘数和等级进行计算之前,使用来确定它们是否确实是有效的双倍。这将防止错误输入导致运行时异常:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim grades() As TextBox = {sa, sb, sc, sd, ss, sr, st}

    Dim x As Double
    Dim strX As String = InputBox("what is the multiplier", "Enter Value", "1")

    If Double.TryParse(strX, x) Then
        For Each s In grades
            Dim grade As Double
            If Double.TryParse(s.Text, grade) Then
                s.Text = Math.Round(grade * x)
            End If
        Next
    Else
        MessageBox.Show("Invalid Multiplier")
    End If
End Sub

这很有帮助,谢谢你这很有帮助,谢谢