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

C# Unable to cast object of type 'TCSCapstone.frmInventory' to type 'System.IConvertible'

我正在尝试将 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);

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

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

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

根据评论和聊天,这应该有效:

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;
}