获取列表项值

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