2012-04-05 15 views
0

プログラムを実行してリストボックス内の何かをクリックしようとすると、このエラーが発生します。Visual Basic - IndexOutOfRangeExceptionエラー

IndexOutOfRangeExceptionが処理されませんでした インデックスが配列の境界外でした。

マイコードとそれにエラーが(> <でマーク)部分:それはlbl_id1.textでエラーをしませんが、それはlbl_rank1.textでないこと

  Dim conn As MySqlConnection 
    conn = New MySqlConnection("server=db4free.net;port=3306; user id=*******; password=**********; database=*******") 

    Dim sqlquery As String = "SELECT * FROM UTGAccess" 
    Dim adapter As New MySqlDataAdapter 
    Dim data As MySqlDataReader 
    Dim command As New MySqlCommand 
    conn.Open() 
    command.CommandText = sqlquery 
    command.Connection = conn 
    adapter.SelectCommand = command 
    data = command.ExecuteReader 
    While data.Read() 
     ListBox1.Items.Add(data(1).ToString) 
     ListBox3.Items.Add(data(0).ToString) 
     Dim writer As New System.IO.StreamWriter(My.Application.Info.DirectoryPath + "/" + data(1).ToString + "=" + data(0).ToString + ".txt", False) 
     writer.Write(data(3).ToString + "=" + data(0).ToString) 
     writer.Close() 
    End While 

    data.Close() 
    conn.Close() 

End Sub 

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged 
    ListBox3.SelectedIndex = ListBox1.SelectedIndex 
    Dim reader As New System.IO.StreamReader(My.Application.Info.DirectoryPath + "/" + ListBox1.SelectedItem.ToString + "=" + ListBox3.SelectedItem.ToString + ".txt") 
    Dim splitread() As String = reader.ReadToEnd.Split("=") 
    reader.Close() 
    > lbl_rank1.Text = "Rank: " + splitread(3).ToString < 
    lbl_id1.Text = "ID: " + splitread(0).ToString 
End Sub 

注意。 IDはサイト上のINTであり、ランクはVARCHARです。どちらも数字です。

+0

「Debug my code for me」の質問は実際にはここには載っていません。 –

+0

なぜファイルに書き込んだ後にファイルから読み込むのですか?なぜそれをデータテーブルにロードしないのですか?ファイルが必要な場合でも、ファイルをテーブルにロードし、ファイルに書き込み、テーブルから読み込みます。 – Jesse

答えて

0

私はこの問題をList.SelectedIndex_changedイベントで時折実行します。 selectedItemを変更する間に、項目が選択されていなくても、このコードは起動されます。私の解決策は、有効であるかどうかをチェックすることです。

If ListBox1.SelectedItems.Count = 0 then exit sub