C# 删除相同值的列表框和arraylist

C# 删除相同值的列表框和arraylist,c#,arraylist,listbox,C#,Arraylist,Listbox,我有两个用于填充列表框的arraylistliststaliststu。我试图同时从listbox和arrylist中删除,我试图使用Remove() foreach (Student student in liststu) { listBox1.Items.Add(student.ToString()); } foreach (Staff staff in liststa) { listBox1.Items.Add(staff.ToString()); } 如何使用array

我有两个用于填充列表框的arraylist
liststa
liststu
。我试图同时从listbox和arrylist中删除,我试图使用
Remove()

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

如何使用arraylist的
Remove()

从列表框中获取正确的值这里的问题是
.Remove
尝试按值而不是按索引查找特定的字符串

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

听起来您希望按索引删除,因此也只需在arraylist上使用
.RemoveAt

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

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

您必须从列表中获取所选项目值,而不仅仅是selectedIndex 您还必须在列表之前从ArrayList中删除

试试这个

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

是否可以尝试按索引删除,但从列表前面的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);
}

它的给定错误“索引超出了数组的边界。”我在listbox位置和arraylist位置之前尝试过这个,我想这是因为我也在将另一个列表加载到列表框,按字符串删除mestill arraylist non Deleted更好的解决方案此代码正常工作,但我有两个arraylist加载相同的listbox,,为什么不把两个ArrayList合并成一个呢?
int selectedIndex;
for (int i = listBox1.SelectedIndices.Count - 1; i >= 0; i--)
{
selectedIndex=listBox1.SelectedIndices[i];
liststa.RemoveAt(selectedIndex); 
listBox1.Items.RemoveAt(selectedIndex);
}