在列表框中添加和更改项目

时间:2015-11-22 03:43:54

标签: c# listbox listboxitem

目前我在C#中创建一个销售点系统,只需点击一下按钮就可以将项目添加到列表框中。每个项目中包含的信息是其名称,数量和价格,它显示在列表框中。

每当添加相同类型的其他商品时,每个商品的数量和价格都需要更新。例如,如果订单中添加了两个肉桂卷,则数量应从1更新为2以及这两个项目的总价格。此外,每次将新项目添加到订单时,都应更新列表框中的项目总数。

以下是我目前对GUI的看法: Point of Sale image 任何有关如何解决此问题的帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以实现此目的的一种方法是制作BindingList项,迭代BindingList以查看新选择的项目是否在列表中,然后根据更新。

以下是我所谈论的一个例子。

创建一个代表您的项目对象的类。

public class Item {
    private readonly string name;
    public string Name { get { return name; } }

    public int Quantity { get; set; }

    private readonly Decimal price;
    public Decimal Price { get { return price; } }

    public Item(string name, int qty, Decimal price) {
        this.name = name;
        this.Quantity = qty;
        this.price = price;
    }

    public override string ToString() {
        // You can mess with the formatting of it, this just provides an example
        return string.Format("{0}\t{1}\t{2}", Quantity, name, Price * Quantity);
    }
}

在表单中,创建一个BindingList<Item>集合并为其创建DataSource

BindingList<Item> items;

public Form1() {
    InitializeComponent();
    items = new BindingList<Item>();
    listBox1.DataSource = items;
}

只需创建一个将这些项添加到BindingList

的函数
private void Update(Item newItem) {
    bool found = false;
    foreach (Item item in items) {
        if (newItem.Name == item.Name) {
            item.Quantity += newItem.Quantity;
            found = true;
            break;
        }
    }

    if (!found) {
        items.Add(newItem);
    }

    listBox1.DataSource = null;
    listBox1.DataSource = items;
}

每次向其添加项目时,都应该能够更新ListBox