获取列表项值

问题描述 投票:0回答:3

[我正在尝试获取列表框中的列表项的值,但不断收到错误“'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);
        }
c# winforms listitem
3个回答
0
投票

在您的代码中,您有一个名为“列表”的类型。您的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不执行任何操作。


0
投票

您要在此处添加字符串:

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

0
投票

您需要更改

 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;
        }
© www.soinside.com 2019 - 2024. All rights reserved.