为对象名称分配计数器编号

时间:2017-01-23 13:18:47

标签: vb.net

我在vb中有60个文本框,我想将它们全部导出到一个文本文件中。我使用这段代码来做到这一点:

My.Computer.FileSystem.WriteAllText("Filename.txt", TextBox1.Text)

因为我有60个文本框,所以我将花费很长时间来做这件事,我使用 For ... Next 来简化程序。我想要这样的代码:

For i as integer = 1 to 60
   My.Computer.FileSystem.WriteAllText("Filename.txt", TextBox(i).Text)
Next

我可以在vb中这样做吗?有没有其他方法可以做到这一点?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以创建文本框列表,并将所有需要的文本框添加到列表中。使用列表中的foreach循环逐个访问文本框并根据需要使用其text属性。

答案 1 :(得分:0)

您可以使用Controls.Find()这样获取TextBox,按顺序

    Dim fileName As String = "c:\some folder\path\Filename.txt"
    Using sw As New System.IO.StreamWriter(fileName)
        Dim tb As TextBox
        Dim matches() As Control
        For i As Integer = 1 To 60
            matches = Me.Controls.Find("TextBox" & i, True)
            If matches.Length > 0 AndAlso TypeOf matches(0) Is TextBox Then
                tb = DirectCast(matches(0), TextBox)
                sw.WriteLine(tb.Text)
            End If
        Next
    End Using

如果您只是遍历Controls集合,则TextBoxes可能会以不同的顺序(而不是它们的名称)返回,如果您在创建表单时剪切了它们或复制/粘贴了其中的一些。