2013-03-25 156 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

相关问题