[我正在尝试获取列表框中的列表项的值,但不断收到错误“'System.InvalidCastException'无法将类型为'System.String'的对象转换为类型为'list'。”
任何帮助将不胜感激,我尝试了很多研究都没有结果(也许我没有在Google上措辞正确)。请参阅下面的代码。
Class ListItem
public class listItem
{
public string Name { get; set; }
public double Price { get; set; }
public double Quantity { get; set; }
public override string ToString()
{
return Name;
}
}
我在此处插入值
Globals.li.Name = ItemToAdd;
Globals.li.Price = Convert.ToDouble(ItemPrice);
Globals.li.Quantity = Convert.ToDouble(Quantity.Text);
descriptionclb.Items.Add(Globals.li.ToString());
Globals是一个globulal类,li是listitem li = new listItem
我在这里收到错误
foreach (var item in descriptionclb.Items)
{
double TotalAmmount = Convert.ToDouble(((list)item).Price);
}
在您的代码中,您有一个名为“列表”的类型。您的foreach循环遍历字符串列表,因此'var item'是一个字符串。您不能将“列表”类型转换为导致异常的字符串。
如果您尝试将所有'listItem'价格值加起来,则应尝试将'descriptionclb.Items'的类型从字符串列表更改为'listItem'列表,然后直接添加listItem。然后,您将可以摆脱演员表。
descriptionclb.Items.Add(Globals.li);
foreach (var item in descriptionclb.Items)
{
double TotalAmmount = item.Price;
}
只是一个音符;在for循环中,TotalAmmount不执行任何操作。
您要在此处添加字符串:
descriptionclb.Items.Add(Globals.li.ToString());
因此,您保存的是字符串而不是listItem对象,这就是您收到错误的原因。
应该是:
descriptionclb.Items.Add(Globals.li);
也该对象descriptionclb.Items
的类型应该为listItem
并且for循环应类似于:
foreach (listItem item in descriptionclb.Items)
{
double TotalAmmount = item.Price;
}
您需要更改
descriptionclb.Items.Add(Globals.li);
和
foreach (var item in descriptionclb.Items)
{
double TotalAmmount = item.Price;
}
如果是TotalAmmount,则将列表中的总票价更改为:
double TotalAmmount=0
foreach (var item in descriptionclb.Items)
{
TotalAmmount = TotalAmmount+ item.Price;
}