删除同值列表框和数组列表

本文关键字:列表 数组 删除 | 更新日期: 2023-09-27 18:33:20

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

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

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

我如何从列表框中获取正确的值以使用arraylist的Remove()

删除同值列表框和数组列表

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

例如,您正在尝试从对象的 ArrayList 中删除字符串"2",而不是索引 2

听起来您希望按索引删除,因此只需在数组列表中使用.RemoveAt

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

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

您必须从列表中获取所选项目值,而不仅仅是所选索引此外,您还必须在列表之前从数组列表中删除

试试这个

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

您可以尝试按索引删除但从列表之前的 ArrayList 中删除,如下所示

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