繁体   English   中英

如何从与列表框中的项目相关的普通列表中删除项目?

[英]How to remove item from generic list that relates to item in listbox?

我搜索了周围,但找不到任何参考。

如何删除与列表listbox的项目相关的常规列表中的项目?

我目前有一个public static List<Employees>和一个名为lstRecordslistbox ,我可以删除listbox的项目,但是可以从列表中删除所有内容,也可以完全删除任何内容。

这是我使用的第一组代码:

private void DeleteRecord()
{
        if (lstRecords.Items.Count > 0)
        {
            for (int i = 0; i < lstRecords.Items.Count; i++)
            {
                if (lstRecords.GetSelected(i) == true)
                {
                    Employees employeeRecord = lstRecords.SelectedItem as Employees;
                    employee.Remove(employeeRecord);
                }
            }



            lstRecords.Items.Remove(lstRecords.SelectedItem);
        }
    }  
}

这是我正在使用的第二组代码,我的List属于部分类,但这全部包含在方法中。

private void DeleteRecord()
{
        ListBox lstRecords = new ListBox();
        List<object> employee = new List<object>();
        employee.RemoveAt(lstRecords.SelectedIndex);
        lstRecords.Items.RemoveAt(lstRecords.SelectedIndex);
}  

到目前为止,我还没有任何一套代码能够按照我希望的方式工作,我显然做错了什么。

我还有一些其他的代码块在玩,但它们似乎都朝着正确的方向发展。

最终,我需要能够双击列表中的一个项目以拉出属性菜单。

您要做的是将ListBox绑定到“员工列表”。 这篇文章显示了绑定,注释也显示了删除代码。 这个想法是,当您从数据源中删除一个项目时,您将不会在列表框中看到它。

将列表框绑定到List <object>

DeleteRecord()方法的问题在于,您刚创建的lstRecords对象不是窗体上的ListBox。

您的代码运行良好,您只需要进行一些小的更改。 第一个代码块确定,但是我不知道您的lstRecords在哪里。 但是看看它,只需复制代码并在雇员对象中有一些记录后运行它即可。

它在代码中创建一个列表框,然后将其添加到窗体(Winforms)中并具有lstRecords全局属性。

ListBox lstRecords;
    private void IntializeDemoListbox()
    {
        lstRecords = new ListBox();
        this.Controls.Add(lstRecords);

        foreach (var item in employee)
        {
            lstRecords.Items.Add(item);
        }
    }

然后,您将能够使用第一套代码,另一套代码将像这样。

private void DeleteRecord()
{
        employee.RemoveAt(lstRecords.SelectedIndex);
        lstRecords.Items.RemoveAt(lstRecords.SelectedIndex);
}  

暂无
暂无

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

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