对于每个项目控制循环是随机的......需要像在GroupBox中一样顺序

时间:2014-04-17 02:50:45

标签: vb.net

我正在尝试遍历组框内的多个文本框控件。代码以相反的顺序将文本框值写入临时文件。

我有以下代码:

  • 应为S1,S2,S3,...... S10
  • 写为S10,S9,S8,...... S1

怎么了?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    file = My.Computer.FileSystem.OpenTextFileWriter("c:\Temp.txt", False)

    For Each item As Control In sourceGroupBox.Controls
        If TypeOf item Is TextBox Then
            If Len(item.Text) > 0 Then
                file.WriteLine(item.Text)
            End If
        End If
    Next

    file.Close()

End Sub

2 个答案:

答案 0 :(得分:2)

Controls集合不一定按任何特定顺序排列。但是,您可以利用LINQ按顺序获取它们:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    file = My.Computer.FileSystem.OpenTextFileWriter("c:\Temp.txt", False)

    For Each item As Control In sourceGroupBox.Controls.OfType(Of TextBox).OrderBy(Function(x) x.Name)
        If Len(item.Text) > 0 Then
            file.WriteLine(item.Text)
        End If
    Next

    file.Close()

End Sub

这假定您使用2位数字为文本框提供了名称

答案 1 :(得分:-1)

你可以用id的for循环来做。

For id As Integer = 1 To 10
    Dim item As TextBox = CType(sourceGroupBox.Controls("S" & id), TextBox)

    If Len(item.Text) > 0 Then
        file.WriteLine(item.Text)
    End If
Next