Visual Basic分割功能

时间:2015-02-25 00:47:13

标签: visual-studio-2010 visual-studio data-structures split

好的,现在我没有收到错误,但是在列表框中发布的所有内容都只包含.txt文件中的第一行文本。这是我改变它的代码:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim inFile As IO.StreamReader

    If IO.File.Exists("StudentList.txt") = True Then
        inFile = IO.File.OpenText("StudentList.txt")
        For index As Integer = 0 To inFile.Peek = -1
            Dim splits = inFile.ReadLine.Split(","c)
            Member(index).ID = splits(0)
            Member(index).lastName = splits(1)
            Member(index).firstName = splits(2)
            Member(index).middleName = splits(3)
            Member(index).grade = splits(4)
            Member(index).period = splits(5)

            ListBox1.Items.Add(Member(index).ID.PadLeft(10) & " " & Member(index).lastName & " " & Member(index).firstName)

        Next
        inFile.Close()
    Else
        MessageBox.Show("error", "error", MessageBoxButtons.OK)
    End If

End Sub

1 个答案:

答案 0 :(得分:0)

问题是您正在尝试将字符串数组分配给Member。也就是说,你有:

Member(index) = infile.ReadLine.Split(",", c);

您需要指定每个字段:

Dim splits = infile.ReadLine.Split(",", c);

Member(index).ID = splits(0);
Member(index).lastName = splits(1);
... etc.
OP编辑后

更新

我怀疑现在的问题是你的For循环只执行一次,或index没有递增。我不知道你在哪里找到了那个不可思议的infile.Peek = -1的东西,但我怀疑它并没有像你想象的那样工作。使用更传统的东西,比如这样。

Dim index As Integer = 0
For Each line As String In File.ReadLines("StudentList.txt")
    Dim splits = line.Split(",", c)
    Member(index).ID = splits(0)
    ' etc.
    ListBox1.Add(...)
    Index = Index + 1
Next