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()
答案 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);
}