簡體   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