目前我在C#中创建一个销售点系统,只需点击一下按钮就可以将项目添加到列表框中。每个项目中包含的信息是其名称,数量和价格,它显示在列表框中。
每当添加相同类型的其他商品时,每个商品的数量和价格都需要更新。例如,如果订单中添加了两个肉桂卷,则数量应从1更新为2以及这两个项目的总价格。此外,每次将新项目添加到订单时,都应更新列表框中的项目总数。
答案 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
。