无法删除指定的项目

本文关键字:项目 删除 | 更新日期: 2023-09-27 18:03:49

我使用以下代码从列表中获取和项目(票)并根据发票号码删除。但是它删除列表中的第一个项目。

private void btnTktDelete_Click(object sender, EventArgs e)
    {
        uOp = true;
        if (MainListBox.SelectedIndex != -1)
        {
            Ticket tkt = (Ticket)MainListBox.SelectedItem;    
            List<Ticket> tlist = GetList<Ticket>(tklp);
            Ticket TheTicket = tlist.Find(x => x.InvoiceNumber == tkt.InvoiceNumber);
            List<Transaction> tranlist = GetList<Transaction>(trlp);

            if (TheTicket != null)
            {
                Int32 number = TheTicket.InvoiceNumber;
                tlist.RemoveAll(x=>x.InvoiceNumber == number);
                tranlist.RemoveAll(x => x.InvoiceNumber == number);
                SaveList(trlp, tranlist);
                SaveList(tklp, tlist);
            }
         //   MainListBox.DataSource = null;
         //   MainListBox.DataSource = GetList<Ticket>(tklp);
         //   dgvExport.DataSource = null;
         //   dgvExport.DataSource = GetList<Ticket>(tklp);
            uOp = false;
        }
    }

无法删除指定的项目

您的代码建议多张票可以有相同的发票号码。这对我来说并不直观——应该是独一无二的。获取列表的最简单方法是在字段中存储对列表的引用。

List<Ticket> allTickets = ...
private void btnTktDelete_Click(object sender, EventArgs e)
{
    Ticket ticketToRemove = (Ticket)MainListBox.SelectedItem; // need cast?
    allTickets.Remove(ticketToRemove);
    // save...
}