对不起标题,我想不出更描述/简洁的方式来表达我的问题。
我的问题是我有一个函数,它通过 foreach 循环对 ListViewItems 集合进行操作,并且它将操作的项目列表取决于函数的布尔参数,称为bSelected。
如果这是真的,我想使用列表视图中的 SelectedItems,否则我想使用列表视图中的 Items。
我无法确定代表项目列表的对象应该是什么,或者如何获取它。我尝试了几种不同的方法(注意 ListView 称为lvList):
IList<ListViewItem> listItems =
( bSelected ? (IList<ListViewItem>)lvList.SelectedItems
: (IList<ListViewItem>)lvList.Items );
foreach ( ListViewItem lvi in listItems ) { ... }
和
IEnumerator<ListViewItem> listEnumerator =
( bSelected ? (IEnumerator<ListViewItem>)lvList.SelectedItems.GetEnumerator()
: (IEnumerator<ListViewItem>)lvList.Items.GetEnumerator() );
while ( listEnumerator.MoveNext() ) { ... }
我已经尝试过类似同类的其他解决方案,但是我遇到了与应用于 SelectedItems 的类型转换有关的运行时错误。
我知道必须有一种方法,因为直接在一个列表或另一个列表上使用 foreach 循环,即:
foreach ( ListViewItem lvi in lvList.SelectedItems ) { ... }
和
foreach ( ListViewItem lvi in lvList.Items ) { ... }
我没有太多 C# 经验,因此不胜感激。