覆盖ListviewItem(vb.net)的类/添加属性

时间:2010-01-12 21:53:22

标签: .net vb.net properties override

我有一个列表视图,但我想在其中的listviewitems中添加3个属性(例如其中一个是“image”)。
我很好地使用3个属性创建一个自定义类,只是继承ListViewItem,但现在我需要使用MultiSelect,所以它意味着做(像For Each循环):

ListView1.SelectedItems.Item(i).Image
不起作用,因为它返回ListViewItem而不是我的CustomClass 我总能做到:
Ctype(ListView1.selectedItems(i), MyCustomClass).Image

但是一次又一次地使用它似乎是一种浪费/错误的方式吗?

2 个答案:

答案 0 :(得分:3)

这就是它的工作原理。 ListView可以存储任何类型的ListItem,并且为了获得派生的强制转换的属性,你必须强制转换它。你正确地做到了。

答案 1 :(得分:2)

ListViewItem子类化为附加自定义属性并不是一个特别好的主意。该类为此特别提供了Tag property,您应该使用自己的对象而不是子类来填充它。它可能在语法方面没有太大的区别,但它是一个更好的设计。