我只是想知道如何获得总价值。
这是列表框中的一个示例:
Soda - 30
Food - 50
如何将30和50相加并在文本框中显示?请帮忙。 我添加到列表框的代码是:
listBox1.Items.Add("btnSoda.text");
我的按钮代码将获得总值:
int i = 0, result = 0;
while (i < listBox1.Items.Count)
{
result += Convert.ToInt32(listBox1.Items[i++]);
}
textboxtotal.Text = Convert.ToString((double)result)
运行程序并单击getTotal Value后显示错误:
发生了'System.FormatException'类型的未处理异常 mscorlib.dll中
答案 0 :(得分:2)
我建议您为自己的项目使用自己的课程。像
这样的东西public class Item
{
public string Name { get; set; }
public int Price { get; set; }
public Item(string name, int price)
{
Name = name;
Price = price;
}
}
而不是
listBox1.Items.Add("btnSoda.text");
你必须写
List<string> lines = File.ReadAllLines("btnSoda.text");
List<Item> items = new List<Item>();
foreach(string line in lines)
{
string[] parts = line.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
string name = parts[0];
int price = int.Parse(parts[1]);
Item item = new Item(name, price);
items.Add(item);
}
comboBox1.DataSource = items;
使用这段代码,您正在阅读文件并创建要在Item
中显示的ComboBox
项。优点是您拥有具有所需属性的特定项目,而不是每次要对其执行某些操作时必须解释的string
。
不要忘记设置组合框的DisplayMember
属性name
。否则,您将无法在ComboBox
中看到项目的名称。
之后你可以使用
int sum = comboBox1.Items
.OfType<Item>()
.Sum(x => x.Price);
label1.Text = sum.ToString();
总结价格。
也许它似乎比其他答案复杂一点,但它是更清洁的方式。
一些优点
ComboBox
而不是计算总和时,您会发现文本文件中的错误答案 1 :(得分:1)
您可以使用Split()
和Sum()
:
var sum = listBox1.Items
.OfType<string>()
.Select(s => Convert.ToInt32(s.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries)[1]))
.Sum();
然后:
lbltotal.Text = sum.ToString();
此外,您可以稍微更改一下代码,它应该有效:
while (i < listBox1.Items.Count)
{
result += Convert.ToInt32(((string)listBox1.Items[i++]).Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries)[1]);
}