2013-03-25 176 views
0

我有一個程序,我試圖通過列表框將項目從一個數組列表移動到另一個列表框,但是當我嘗試將其添加到第二個數組列表時,它不會添加到那裏。從另一個數組列表添加到數組列表

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"; 
     } 

在這裏,我想將它添加到第二個數組列表,但它不工作if語句,但是正確我已經試過這與打印語句。那麼有人可以告訴我爲什麼下面的行不會添加到列表中?

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

很難理解你要做什麼。你能更清楚一點嗎?例如「Count」變量有什麼用處? – 2013-03-25 13:35:58

+0

正確我不知道是什麼讓你感到困惑,但我會再試一次,我想要做的是從xml文件中讀取數據並將變量內的值添加到變量中,然後將這些變量添加到數組列表和列表框中。當我將項目從一個列表框移動到另一個列表框時,我希望將與它相關的所有變量移動到第二個列表中,我希望這會清除所有內容。 – user2157179 2013-03-25 13:41:55

回答

1

list2.Add(list1.IndexOf(i));會給你每個元素的索引(位置)。不是元素本身。

要添加你需要做這樣的事情的元素:

list2.Add(list1[i]);

而且,正如順便說一句,這隻會複製引用每一個元素,它不會創建一個新副本每個。

+0

@David Tyron感謝這對我有用,但它似乎有一個錯誤,當我嘗試將它寫入XML我似乎經常得到第一個標籤出現多次而不是8個不同的標籤,因爲每個變量是不同的。 – user2157179 2013-03-25 13:59:26