如何从c#中的列表框和原始列表中删除选定的列表框项

时间:2013-12-07 00:17:12

标签: c# wpf list listbox selecteditem

我在删除列表中的数据时遇到问题,该列表由用户在我的文本框中输入,然后存储在列表框中。我知道如何删除列表框中的所选项目但是当我单击我的按钮以显示列表中的所有内容时,我刚删除的所选项目仍在列表中。

以下是我删除列表框中所选项目的代码:

for (int i = 0; i < VehicleListBox.SelectedItems.Count; i++)
    VehicleListBox.Items.Remove(VehicleListBox.SelectedItems[i]);

我的列表位于名为company的类中,列表名为vehicles。我到处寻找我的答案,似乎无法找到它。我还应该提到它是一个通用列表。

4 个答案:

答案 0 :(得分:0)

好的,我测试了它。

foreach (string thing in listBox1.SelectedItems){
                myList.remove(thing);
            }

答案 1 :(得分:0)

据我所知,您正在使用getDetails获取列表,然后将其逐个添加到VehicleListBox

选项是从List中删除所选项目,然后相应地更新ListBox。

您可以添加一个简单的方法来执行此操作:

private void UpdateListBox(List<string> vehicles);

用您正在使用的类型替换“List”。

或者您是否尝试过绑定ItemsSource的{​​{1}}?

在WPF中(例如):

ListBox

代码:

<ListBox Name=ExampleListBox, ItemsSource={Binding} />

填充List后,最好使用Window_Loaded方法。 如有必要,请在列表更改时更新。

答案 2 :(得分:0)

根据我的理解,使用您的类设计,我在WPF项目中编写了以下代码。我添加了一个名为&#34; listbox1&#34;的列表框。和表单的按钮。我相信以下代码可以满足您的需求,或者至少可以指导您找到答案。

    public class Company
    {
        public List<Vehicle> Vehicles;
        public Company()
        {
            Vehicles = new List<Vehicle>() { new Vehicle(1), new Vehicle(2), new Vehicle(3) };
        }
    }
    public class Vehicle
    {
        private string _vehicleNum;
        public Vehicle(int num)
        {
            _vehicleNum = "Vehicle" + num.ToString();
        }
        public string getDetails()
        {
            return _vehicleNum;
        }
    }
    Company ACompany = new Company();
    public MainWindow()
    {
        InitializeComponent();

        foreach(Vehicle v in ACompany.Vehicles)
            listbox1.Items.Add(v.getDetails());

    }
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        for (int i = 0; i < listbox1.SelectedItems.Count; i++)
        {
            foreach(Vehicle v in ACompany.Vehicles)
            {
                if (String.Equals(v.getDetails(), listbox1.SelectedItems[i].ToString()))
                {
                    ACompany.Vehicles.Remove(v);
                    break;
                }
            }
            listbox1.Items.Remove(listbox1.SelectedItems[i]);
        }
    }

答案 3 :(得分:0)

鉴于您当前的代码,您可以通过反转getDetails()正在执行的操作来解析字符串,然后从列表中选择适当的对象。

for (int i = 0; i < VehicleListBox.SelectedItems.Count; i++)
{
    var item = (string)VehicleListBox.SelectedItems[i];

    VehicleListBox.Items.Remove(item);

    // assuming your company class has only a Name and ID...
    string name = ...  // parse name from item
    int id = ...       // parse id from item

    vehicles.Remove(vehicles.Single(x => x.Name == name && x.ID == id));
}