2013-03-25 5 views
0

한 arraylist에서 다른 곳으로 목록 상자를 통해 항목을 이동하려고하는 프로그램이 있지만 두 번째 arraylist에 추가하려고하면 거기에 추가되지 않습니다.다른 배열 목록의 배열 목록에 추가

ArrayList list1 = new ArrayList(); 
ArrayList list2 = new ArrayList(); 
list1.Add(new Class(var1, var2, var3, var4, var5, var6, var7)); 
foreach (object o in list1) 
     { 
      class m = (class)o; 
      selectionBox.Items.Add(m); 
     } 

위의 모든 내용을 초기화하고 모든 것을 클래스에 추가 한 다음 목록 상자에 추가했습니다. XML 파일에서 가져온 데이터를 주목하십시오.

bool req = true; 

     if (selectionBox.SelectedItem != null) 
     { 
      Count++; 
      errorLabel.Text = ""; 

      for (int i = 0; i < selectionBox.Items.Count; i++) 
      { 
       if (selectionBox.GetSelected(i) == true) 
       { 

        class m = selectionBox.SelectedItem as class; 
        if (m.var2 == ((Modules)selectionBox.Items[i]).var2) 
        { 
         list2.Add(list1.IndexOf(i)); 
        } 
       } 
      } 

     } 
     else 
     { 
      errorLabel.Text = "Error"; 
     } 

여기에 내가 두 번째 배열 목록에 추가하려고하지만 문 그러나 나는 print 문에 이것을 시도 맞다면 그것은 작동하지 않습니다. 그럼 왜 누군가가 다음 줄이 목록에 추가되지 않는지 말해 줄 수 있습니까?

list2.Add(list1.IndexOf(i)); 
+0

당신이 무엇을 할 것인지 이해하기가 어렵습니다. 좀 더 명확하게 할 수 있습니까? 예 : 'Count' 변수의 사용법은 무엇입니까? –

+0

맞습니다. 무엇이 혼란 스러울 지 모르겠지만 다시 시도 할 것입니다. XML 파일에서 읽은 다음 변수를 태그 안에 값을 추가 한 다음 해당 변수를 배열 목록과 목록 상자에 추가합니다. 하나의리스트 박스에서 다른리스트 박스로 아이템을 옮기고 싶을 때, 두 번째 배열리스트로 옮기고 싶습니다. – user2157179

답변

1

list2.Add(list1.IndexOf(i));은 각 요소의 색인 (위치)을 제공합니다. 요소 자체는 아닙니다.

이 뭔가를 할 필요가있는 요소를 추가하려면 :

list2.Add(list1[i]); 또한

, 이것은 각 요소에 대한 참조를 복사합니다 단지 옆으로, 그것은 새 복사본을 만들지 않습니다 각각의

+0

@David Tyron 감사합니다. 이것은 저에게 효과적이었습니다. 그러나 XML로 작성하려고 할 때 버그가있는 것 같습니다. 각 변수가 다른 8 개의 태그 대신 여러 번 나타나는 첫 번째 태그가 자주 나타나는 것처럼 보입니다. – user2157179