2014-12-05 67 views
0
foreach (Student student in liststu) 
{ 
    listBox1.Items.Add(student.ToString()); 
} 
foreach (Staff staff in liststa) 
{ 
    listBox1.Items.Add(staff.ToString()); 
} 

我有两个arraylist liststaliststu用于填充我的列表框。我试图从列表框和arrylist中同时删除,我正在尝试使用Remove(),但我不知道如何从列表框中获取正确的值以便在arraylist中删除。删除相同的值列表框和阵列列表

for (int i = listBox1.SelectedIndices.Count - 1; i >= 0; i--) 
{ 
    listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]); 
    liststa.Remove(listBox1.SelectedIndex.ToString()); 
} 

我如何从列表框中的使用ArrayList的Remove()

回答

0

的问题在这里正确的值是.Remove正试图通过值来查找特定的字符串,而不是指数。

例如,你想从对象的ArrayList中删除字符串“2”,指数2

这听起来像你想通过指数来去除,所以干脆就ArrayList中使用.RemoveAt以及

listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]); 
liststa.RemoveAt(listBox1.SelectedIndices[i]); 

这显然需要listtsa和listBox1中保持同步

+0

之前从ArrayList中删除其给出错误“索引超出了数组的范围。”我之前列表框位置试试这个和ArrayList的位置是不同的,我认为是因为IM加载另一个列表中列出框也 – 2014-12-05 19:58:56

+0

删除由字符串较好地解决了我 – 2014-12-05 20:02:37

0

你必须让从列表中选择的项目价值不仅01将selectedIndex还你从ArrayList中删除列表之前

试试这个

int selectedIndex; 
for (int i = listBox1.SelectedIndices.Count - 1; i >= 0; i--) 
{ 
selectedIndex=listBox1.SelectedIndices[i]; 
liststa.Remove(listBox1.Items[selectedIndex].ToString()); 
listBox1.Items.RemoveAt(selectedIndex); 
} 
+0

仍然ArrayList的非删除 – 2014-12-05 20:16:27

0

可以尝试通过索引中删除,但名单为以下

int selectedIndex; 
for (int i = listBox1.SelectedIndices.Count - 1; i >= 0; i--) 
{ 
selectedIndex=listBox1.SelectedIndices[i]; 
liststa.RemoveAt(selectedIndex); 
listBox1.Items.RemoveAt(selectedIndex); 
} 
+0

此代码工作,但我有两个数组列表加载相同的列表框,, – 2014-12-07 19:40:11

+0

为什么不把2个数组列表合并成一个? – Nobel 2014-12-08 08:55:02