我有一堂课,其中将名称和价格组合到一个列表中,然后添加到我的listbox
中。
我希望标签显示列表中每个乘车的总价格,但是当我将计算放入foreach循环时,它会不断添加每条记录。因此,我只想添加列表框的 last 值。
Prices
被添加到一个类中,因此它们被称为RideNamePrice.Price
。我需要计算这些值。
代码:
double total = 0
buttonclick{
foreach (var item in lbRides.Items)
{
total = total+ RideNamePrice.Price;
}
lbtotal.Content = Convert.ToString(total);
}
答案 0 :(得分:0)
我没有得到您真正想要的。但是在您的double precision
中您没有使用过foreach
。您总是将item
与total
添加在一起,因此您的RideNamePrice.Price
完全没有用。
我认为您可以进行以下修改:
foreach
或者,如果您要将最后一件商品的价格添加到double total = 0
buttonclick(Object sender,EventArgs e)
{
foreach (var item in lbRides.Items)
{
total = total+ item.Price;
}
lbtotal.Content = Convert.ToString(total);
}
中,则可以按以下方式编辑代码:
total
答案 1 :(得分:0)
您可以通过两种方式进行操作:
在每次计算中将total
重置为0:
buttonclick{
double total = 0
foreach (var item in lbRides.Items)
{
total = total+ RideNamePrice.Price;
}
lbtotal.Content = Convert.ToString(total);
}
关于此的一则评论:item
是object
类型的,您如何编译此代码,因此当您尝试访问Price
时,此代码将无法工作领域。而且方法签名是错误的。
或按照自己的意愿做(由于方法签名错误,因此仍无法编译):
buttonclick
{
var item = lbBox.Items[lbBox.Items.Count - 1];
// You have to perform casting in order to access fields in your class,
// but be carefull, castedToType can be null after this operation
var castedToType = item as MyType;
total += castedToType.Price;
// No need to call Convert.ToString()
lbtotal.Content = total.ToString();
}