删除相同的值列表框和arraylist

时间:2014-12-05 19:46:40

标签: c# arraylist listbox

foreach (Student student in liststu)
{
    listBox1.Items.Add(student.ToString());
}
foreach (Staff staff in liststa)
{
    listBox1.Items.Add(staff.ToString());
}

我有两个用于填充列表框的arraylist liststa liststu。我试图同时从列表框和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' s Remove()

3 个答案:

答案 0 :(得分:0)

这里的问题是.Remove试图按值找到特定的字符串,而不是索引。

例如,您尝试从对象的ArrayList中删除字符串“2”,索引2

听起来你想通过索引删除,所以只需在arraylist上使用.RemoveAt

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

这显然要求listtsa和listBox1保持同步

答案 1 :(得分:0)

您必须从List中获取所选项目值,而不仅仅是selectedIndex 您还必须从List

之前的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);
}

答案 2 :(得分:0)

你可以尝试通过索引删除但是从列表中删除ArrayList,如下所示

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