2017-01-25 5 views
0

リストを扱うには少し錆びます。私は2つのパブリックリストネストされたリストを取得するVB.NET

Public Shared individualDetails As New List(Of String) 
Public Shared catList As New List(Of List(Of String)) 

individualListsに文字列を追加するには、[追加]ボタンを宣言しました。

Protected Sub btnAddLevel_Click(sender As Object, e As EventArgs) Handles btnAddLevel.Click 

    individualDetails.Add(ddlCountry.SelectedItem.Value) 
    individualDetails.Add(txtAvailability.Text) 
    individualDetails.Add(txtRemarks.Text) 

    catList.Add(individualDetails) 

End Sub 

ユーザーは、複数の追加を行い、catListに追加できます。

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    For i As Integer = 0 To catList.Count 

     For x As Integer = 0 To individualDetails.Count 

      MsgBox(individualDetails(x)) 

     Next x 
    Next i 
End Sub 

内側のforループに問題があります。私はデバッグを行いました.2回追加すると、individualDetailsには6つのアイテムが含まれていることが分かります。

catListにまとめられたリストではなく、catListに複数のリストを追加するにはどうすればよいですか?リストを間違って追加していますか?

答えて

0

catListは、リストのコンテナです。コンテナにはリストが1つしかありません。individualDetailsです。 btnAddLevelイベントハンドラは、新しいリストを作成するのではなく、その1つのリストに新しいエントリを追加し続けます。

individualDetailsは、変数Public Sharedであってはなりません。イベントハンドラのローカルである必要があります。

Protected Sub btnAddLevel_Click(sender As Object, e As EventArgs) Handles btnAddLevel.Click 
    Dim individualDetails As New List(Of String) 

    individualDetails.Add(ddlCountry.SelectedItem.Value) 
    individualDetails.Add(txtAvailability.Text) 
    individualDetails.Add(txtRemarks.Text) 

    catList.Add(individualDetails) 

End Sub 

リストを表示するには、デバッグコードを変更する必要があります。

For i As Integer = 0 To catList.Count - 1 
    Dim individualDetails = catList(i) 

    For x As Integer = 0 To individualDetails.Count - 1 

     MsgBox(individualDetails(x)) 

    Next x 
Next i 

コードには他にも改善がありますが、これはあなたに役立つはずです。

+0

こんにちは@prprcupofcoffee、素晴らしい。それは今働いていますが、私はループを少し変更しました。私は.count - 1で追加しました。そうでなければ、添え字がなくなります。方向性ありがとう! –

+0

私はあなたがそれに遭遇するだろうと思った:)プロセスの一部! – prprcupofcoffee

関連する問題