在集合中显示列表框中的单独项目

时间:2014-01-14 15:04:34

标签: c# winforms listbox

我正在制作一个购物篮winforms应用程序,它将接收用户的输入,用户将指定产品名称,价格和数量。

我有一个与app相关的方法和一个创建列表的构造函数的dll - 我已经在winforms代码中实例化了这个。

我遇到的问题是我无法在列表框中分隔不同的产品,它会替换用户输入的上一个项目,例如它目前会读到:

Product     Price      Quantity
Bread       3.60       3
Milk        6.57       5
Eggs        8.97       7
Bread       11.37      9

我希望它阅读:

Product     Price      Quantity
Bread       6.00       5
Milk        1.19       2
Eggs        1.50       2

我希望单独显示每个项目,以及相应的价格和当前数量。

我尝试使用foreach循环迭代整个篮子但是我收到错误:

  

foreach语句不能对类型的变量进行操作   'namespace.ShoppingBasket'因为'namespace.ShoppingBasket'没有   包含'GetEnumerator'的公共定义

我应该使用界面来实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

如果要在ShoppingBasket中枚举篮子,则foreach课程不会实现界面IEnumerable。如果您不想从头开始实现该接口,则可以从已经实现该接口的某个类继承(例如List<T>)。

E.g。如果您将订单商品存储在列表中,则可以返回它的枚举器:

public class ShoppingBasket : IEnumerable<OrderItem>
{
    private List<OrderItem> items = new List<OrderItem>();

    // ...

    public IEnumerator<OrderItem> GetEnumerator()
    {
        return items.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

注意:您也可以添加IEnumerator GetEnumerator()方法,而不是实现IEnumerable接口。这也将使foreach起作用。