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

Vb.net 在Visual Basic中选择列表框项时切换CVS文本文件项时出错,vb.net,text,csv,if-statement,listbox,Vb.net,Text,Csv,If Statement,Listbox,当在列表框中选择姓氏时,我尝试将“m”切换为“先生”,将“F”切换为“女士”。当我点击第一个名字时,它工作了,但当我点击任何其他名字时,我得到了以下错误消息: --附加信息:索引超出了数组的边界-- 文本文件中的信息如下所示: Ball,Krystal,F,1981 Banks,Robin,F,1988 Burgher,Hamilton,M,1980 Early,Brighton,M,1989 Hedd,MT,M,1960

当在列表框中选择姓氏时,我尝试将“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

有人能告诉我怎么了吗。提前感谢。

我完全按照您的要求重新创建了您的应用程序,它工作正常

这让我相信有两件事正在发生:

  • 您的
    Info.txt
    文件中有错误字符
  • 您尚未使用与
    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
    

    错误消息中的行号是否与正在显示的代码的行号匹配?没有,似乎所有内容都是正确的。我不知道当我选择第一个名字“Ball”时它会起作用,但它会在其他名字上抛出错误,
    lstNames
    是一个组合框,其中包含
    Ball
    Banks
    Burgher
    Early
    。。。您是如何填充组合框的?我刚刚用我在文本文件内容上键入的最后一个名称填充了集合中的列表框OK,它现在可以工作了。谢谢