1

这是我第一次使用这个网站,所以希望我能正确地提出我的问题。

我正在尝试制作一个具有 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中的项目但我不知道该怎么做,因为我正在存储对象.

4

2 回答 2

1

当您从同一个列表中循环和删除项目时,您正在删除错误索引处的错误项目,因为删除项目后索引将被重置。

尝试这个

List<RentalCar> tempList = new List<RentalCar>();
for (int i = 0; i <=rentalList.Count - 1; i++)
{
    if (!listBoxRental.SelectedIndices.Contains(i))
    {
       tempList.Add(rentalList[i]);
    }
}

然后你可以绑定tempListListBox

于 2013-01-16T03:16:51.787 回答
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);
    }
于 2013-01-16T04:22:14.877 回答