2017-01-25 1 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-loop에 문제가 있습니다. 디버그를했는데 두 번 추가하면 individualDetails에 6 개의 항목이 포함됩니다.

catList에 결합 된 목록이 아닌 catList에 여러 목록을 추가하려면 어떻게해야합니까? 목록을 잘못 추가합니까?

답변

0

catList은 목록 컨테이너입니다. 컨테이너에 목록이 하나만있는 경우 individualDetails입니다. btnAddLevel 이벤트 처리기는 새 목록을 만드는 대신 해당 목록에 새 항목을 계속 추가합니다.

individualDetailsPublic 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

안녕하세요 @prprcupof 커피입니다. 그것은 지금 일하고있다, 그러나 나는 루프에 사소한 변화를했다. .count - 1에 추가했습니다. 그렇지 않으면 subscript가 부족합니다. 방향 주셔서 감사합니다! –

+0

나는 당신이 그것을 만날 것이라고 생각했다 :) 과정의 일부! – prprcupofcoffee