获取列表项值
Get listitem value
Edit/Update!!!
我想更新问题,因为下面的答案只是引导我朝着正确的方向前进,但并没有完全解决问题。
但是我确实设法通过更改项目的方式解决了问题,希望这对将来的人有所帮助
像这样将项目添加到 class 列表
descriptionclb.Items.Add(new listItem { Name = ItemToAdd, Price = Convert.ToDouble(ItemPrice), Quantity = Convert.ToDouble(Quantity.Text) });
并像这样迭代项目
foreach (Listitem item in descriptionclb.Items)
{
double TotalAmmount = item.Price);
//Do stuff with Item
}
我正在尝试获取列表框中列表项的值,我一直收到错误消息“'System.InvalidCastException' 无法将类型 'System.String' 的对象转换为类型 'list' ."
任何帮助将不胜感激,我已经尝试进行大量研究但没有结果(也许我没有在 google 上正确地表达问题)。请参阅下面的代码。
Class 列表项
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 是全局变量 class 而 li 是 listitem li = new listItem
我在这里得到错误
foreach (var item in descriptionclb.Items)
{
double TotalAmmount = Convert.ToDouble(((list)item).Price);
}
您正在此处添加字符串:
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;
}
在您的代码中,您有一个名为 'list' 的类型。您的 foreach 循环遍历字符串列表,因此 'var item' 是一个字符串。您不能将 'list' 类型转换为导致异常的字符串。
如果您尝试将所有 'listItem' 价格值相加,那么您应该尝试将 'descriptionclb.Items' 的类型从字符串列表更改为 'listItem' 列表,并且直接添加列表项。然后你就可以摆脱演员了。
descriptionclb.Items.Add(Globals.li);
foreach (var item in descriptionclb.Items)
{
double TotalAmmount = item.Price;
}
请注意;在 for 循环中,您不对 TotalAmmount 做任何事情。
你需要改变
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;
}
Edit/Update!!!
我想更新问题,因为下面的答案只是引导我朝着正确的方向前进,但并没有完全解决问题。
但是我确实设法通过更改项目的方式解决了问题,希望这对将来的人有所帮助
像这样将项目添加到 class 列表
descriptionclb.Items.Add(new listItem { Name = ItemToAdd, Price = Convert.ToDouble(ItemPrice), Quantity = Convert.ToDouble(Quantity.Text) });
并像这样迭代项目
foreach (Listitem item in descriptionclb.Items)
{
double TotalAmmount = item.Price);
//Do stuff with Item
}
我正在尝试获取列表框中列表项的值,我一直收到错误消息“'System.InvalidCastException' 无法将类型 'System.String' 的对象转换为类型 'list' ."
任何帮助将不胜感激,我已经尝试进行大量研究但没有结果(也许我没有在 google 上正确地表达问题)。请参阅下面的代码。
Class 列表项
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 是全局变量 class 而 li 是 listitem li = new listItem
我在这里得到错误
foreach (var item in descriptionclb.Items)
{
double TotalAmmount = Convert.ToDouble(((list)item).Price);
}
您正在此处添加字符串:
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;
}
在您的代码中,您有一个名为 'list' 的类型。您的 foreach 循环遍历字符串列表,因此 'var item' 是一个字符串。您不能将 'list' 类型转换为导致异常的字符串。
如果您尝试将所有 'listItem' 价格值相加,那么您应该尝试将 'descriptionclb.Items' 的类型从字符串列表更改为 'listItem' 列表,并且直接添加列表项。然后你就可以摆脱演员了。
descriptionclb.Items.Add(Globals.li);
foreach (var item in descriptionclb.Items)
{
double TotalAmmount = item.Price;
}
请注意;在 for 循环中,您不对 TotalAmmount 做任何事情。
你需要改变
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;
}