在 Visual Basic 中选择列表框项时切换 CVS 文本文件项时出错



当在列表框中选择姓氏时,我正在尝试将"M"切换为"先生",将"F"切换为"女士"。当我单击第一个名称时,它可以工作,但是当我单击任何其他名称时,我收到此错误消息:

-

-附加信息:索引在数组边界之外。

文本文件中的信息如下所示:

       Ball,Krystal,F,1981
       Banks,Robin,F,1988
       Burgher,Hamilton,M,1980
       Early,Brighton,M,1989
       Hedd,MT,M,1960
       Hogg,Ima,F,1953
       Knapp,Anita,F,1970
       Overnout,Roger,M,1968
       Psito,Arnie,M,1962
       Teak,Anne,F,1939

我的代码如下:

    Private Sub btnEnter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnter.Click
    Dim names As IO.StreamReader = IO.File.OpenText("Info.txt")
    Dim lName As String = lstNames.Text
    Dim line As String
    Dim gender As String
    Dim foundFlag As Boolean = False
    Do Until foundFlag Or names.EndOfStream
        line = names.ReadLine
        If line.Split(","c)(2) = "M" Then
            gender = "Mr. "
        ElseIf line.Split(","c)(2) = "F" Then
            gender = "Ms. "
        End If
        If line.Split(","c)(0) = lName Then
            txtOutput.Text = gender & line.Split(","c)(1) & " " & line.Split(","c)(0) & " is " & 2012 - line.Split(","c)(3)
            foundFlag = True
        End If
    Loop
End Sub

有人可以让我知道出了什么问题。提前谢谢。

我完全按照您在此处的方式重新创建了您的应用程序,并且它运行良好。

这让我相信正在发生以下两件事之一:

  1. 您的Info.txt文件中有错误的字符
  2. 您尚未使用与 Info.txt 中相同的名称填充 lstNames 组合框。

PS - 您可能还想查看您的循环以使其更有效率:

    Dim line() As String
    Dim gender As String
    Dim foundFlag As Boolean = False
    Do Until foundFlag Or names.EndOfStream
        line = names.ReadLine.Split(","c)
        If line(0) = lName Then
            If line(2) = "M" Then
                gender = "Mr. "
            ElseIf line(2) = "F" Then
                gender = "Ms. "
            End If
            txtOutput.Text = gender & line(1) & " " & line(0) & " is " & 2012 - cint(line(3))
            foundFlag = True
        End If
    Loop

最新更新