这是我第一次使用这个网站,所以希望我能正确地提出我的问题。
我正在尝试创建一个具有RentalCar对象的BindingList的程序。现在我试图允许自己一次删除多辆汽车。
这是我目前用于删除按钮的代码。
private void buttonRemoveRental_Click(object sender, EventArgs e)
{
try
{
//List<RentalCar> tempList = new List<RentalCar>(); (This was here for another solution i am trying)
int index = listBoxRental.SelectedIndex;
for (int i = rentalList_.Count - 1; i >= 0; i--)
{
if (listBoxRental.SelectedIndices.Contains(i))
{
rentalList_.RemoveAt(i);
}
}
}
catch(Exception)
{
MessageBox.Show("Please select a vehicle to remove from the list");
}
但有时一个项目将留在列表框中,我无法删除。每次尝试删除最后一项时,都会删除列表中的每一项。
我正在尝试的另一个解决方案是创建另一个列表,它将存储我的rentalList_中选定的车辆然后循环并从rentalList_删除tempList中的项目但是我不知道如何去做因为我我正在存储物品。
答案 0 :(得分:1)
当您从同一个List中循环并删除项目时,您将删除错误索引处的错误项目,因为删除项目后将重置索引。
试试这个
List<RentalCar> tempList = new List<RentalCar>();
for (int i = 0; i <=rentalList.Count - 1; i++)
{
if (!listBoxRental.SelectedIndices.Contains(i))
{
tempList.Add(rentalList[i]);
}
}
然后,您可以将tempList
绑定到ListBox
答案 1 :(得分:1)
试试这个解决方案。它对我很好。
private void buttonRemoveRental_Click(object sender, EventArgs e)
{
var selectedItems= listBoxRental.SelectedItems.Cast<String>().ToList();
foreach (var item in selectedItems)
listBoxRental.Items.Remove(item);
}