0

我四处搜寻,但找不到任何参考资料。

如何删除与 a 中的项目相关的通用列表中的项目listbox

我目前有一个public static List<Employees>和一个listbox命名的lstRecords,我可以删除该项目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);
}  

到目前为止,我还没有让任何一组代码按照我想要的方式工作,我显然做错了什么。

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

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

4

2 回答 2

0

您要做的是将您的 ListBox 绑定到您的员工列表。这篇文章显示了绑定,评论也显示了删除代码。这个想法是,当您从 DataSource 中删除一个项目时,您将不会在 ListBox 中看到它。

将列表框绑定到 List<object>

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

于 2013-07-19T21:54:45.383 回答
0

您的代码运行良好,您只需进行一些小的更改。第一个代码块是好的,但我不知道你的 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);
}  
于 2013-07-19T22:41:19.910 回答