删除同值列表框和数组列表
本文关键字:列表 数组 删除 | 更新日期: 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);
}