2012-11-14 27 views
0

我試圖將「M」切換爲「Mr.」和「F」到「女士」當在列表框中選擇姓氏時。當我點擊了第一個名字,它的工作,但是當我點擊任何其它的名字,我得到這個錯誤信息:Error在Visual Basic中選擇列表框項目時切換CVS文本文件項目

--Additional信息:索引是該數組.--

的信息的範圍之外在文本文件中是這樣的:

 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 

可有人請讓我知道什麼是錯的。提前致謝。

+0

是否錯誤消息的行號匹配你展示的代碼的行數? – dfrevert

回答

0

我重新創建你的應用程序,就像你在這裏一樣,它工作得很好。

這使我相信兩件事情之一發生:

  1. 您的Info.txt文件壞字符
  2. 沒有填充您的lstNames與組合框相同的名字,你有什麼Info.txt

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 
+0

好吧,讓我試試 –

+0

沒有一切似乎是正確的。當我選擇第一個名字「Ball」時,我不知道它是否有效,但它會在其他名字上拋出錯誤 –

+0

而'lstNames'是一個組合框,包含諸如'Ball','Banks','Burgher','Early '??? ...你是如何填充組合框? –

相關問題