繁体   English   中英

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

[英]How to delete a selected listbox item from both the listbox and the original list in c#

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

这是我的代码,用于删除列表框中的选定项目:

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

我的清单在一个名为company的类中,该清单称为车辆。 我大部分时间都在四处寻找答案,但似乎找不到。 我还应该提到这是一个通用列表。

好的,我测试了。

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

因此,据我了解,您正在使用getDetails来获取列表,然后将它们一个接一个地添加到VehicleListBox

一种选择是从List删除选定的项目,然后相应地更新ListBox。

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

private void UpdateListBox(List<string> vehicles);

将“ List”替换为您使用的类型。

另外,您是否尝试过绑定ListBoxItemsSource

在WPF中(例如):

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

内码:

ExampleListBox.DataContext = myList;

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

就您所了解的类设计而言,我在WPF项目中编写了以下代码。 我在表单中添加了一个名为“ listbox1”的列表框和一个按钮。 我相信以下代码可以满足您的要求,或者至少可以指导您找到答案。

    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]);
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM