【发布时间】:2014-01-15 10:49:20
【问题描述】:
我有一个 winforms 应用程序,它接受用户输入并将其添加到列表中。然后这个列表会显示在一个列表框中。
我的问题是我希望列表框仅在一行上显示单个项目一次。 目前它看起来像这样:
Product Price Quantity
Bread 1.20 1
Bread 2.40 2
Bread 3.60 3
Eggs 1.50 1
Eggs 3.00 2
我希望它显示:
Product Price Quantity
Bread 3.60 3
Eggs 3.00 2
有可能实现吗?
private void btnAdd_Click(object sender, EventArgs e)
{
lbBasket.DisplayMember = "ProductName";
try
{
string name = textBoxProduct.Text.ToString();
decimal price = Convert.ToDecimal(textBoxPrice.Text);
int quantity = Convert.ToInt32(textBoxQuantity.Text);
if (string.IsNullOrWhiteSpace(textBoxQuantity.Text))
{
shoppingBasket.AddProduct(name, price);
lbBasket.Items.Add(textBoxProduct.Text);
lbPrice.Items.Add(shoppingBasket.BasketTotal);
lbQuantity.Items.Add(shoppingBasket.NumberOfTotalQuantities);
}
else
{
shoppingBasket.AddProduct(name, price, quantity);
lbPrice.Items.Add(shoppingBasket.BasketTotal);
lbQuantity.Items.Add(shoppingBasket.NumberOfTotalQuantities);
foreach (OrderItem item in shoppingBasket)
{
if (item.ProductName == name)
{
lbBasket.Items.Add(item.ProductName);
}
}
}
}
【问题讨论】:
-
显示代码如何将值添加到列表框
-
您能否不使用字典来添加项目,并为每个唯一项目保留运行总价格。然后每次添加新项目时重新绑定列表
-
@RayB151 - 您似乎在使用三个不同的列表框。所以不,我不认为你可以简单地实现你想要的。如果您使用的是单个列表框,那么可以。但是,如果您要求显示具有最高值或最高数量的项目(从您的示例推断),则显示此数据的两个列表框之间没有实际链接。
-
啊,好吧。我认为使用三个列表框会更容易,但如果可以的话,我将只更改为一个。
-
我会尽快添加一个完整的解决方案。