C#无法将“TCSCapstone.frmInventory”类型的对象转换为“System.IConvertible”类型

时间:2017-05-11 05:59:36

标签: c# listbox listboxitem

我正在尝试将Listbox中的所有值加起来,其中Listbox由两个其他列表框的值相乘。它基本上是Listbox的总和。

我一直收到错误,我查了一下,其他人也有类似问题的类似问题。它与ToInt32ToString有关,我无法修复它。每当我单击我的按钮加载执行该循环的Listbox时,它就会给我错误。

请帮忙,这就是我需要的全部。

         int i = 0, result = 0;
         while (i < lstTotalPrices.Items.Count)
         {
             result += Convert.ToInt32(lstTotalPrices.Items[i++]);
         }

         txtTotal.Text = Convert.ToString(result);

2 个答案:

答案 0 :(得分:1)

基于评论和聊天,这应该有效:

int i = 0; 
decimal result = 0; 
while (i < lstTotalPrices.Items.Count) 
{ 
    result += ((frmInventory)lstTotalPrices.Items[i++]).TotalPrice; 
}

虽然是一个更整洁的解决方案

int i = 0;
decimal result = 0;

foreach (var item in lstTotalPrices.Items)
{
    result += item.TotalPrice;
}

答案 1 :(得分:0)

使用lstTotalPrices.Items[i++]看起来Convert.ToInt32()无法转换为整数所以最好将它们转换为字符串,然后将这些值传递给ToInt32(),请尝试以下操作:

 result += Convert.ToInt32(lstTotalPrices.Items[i++].ToString());

您可以使用int.TryParse()进行此转化,而不是Convert.ToInt32()