我在Windows应用程序中使用ImageListView dll,我需要从IList中选择最后一个索引值。
我现有的工作代码
var items = ((flag == 1) ? (IList<ImageListViewItem>)imageListView1.Items : (IList<ImageListViewItem>)imageListView1.SelectedItems);
foreach (ImageListViewItem item in items)
{
...
}
我正在尝试使用以下代码从IList中选择第一个值
var items = ((flag == 1) ? (IList<ImageListViewItem>)imageListView1.Items : (IList<ImageListViewItem>)imageListView1.SelectedItems[0]);
foreach (ImageListViewItem item in items)
{
...
}
如果我尝试上面的代码我得到以下错误 “附加信息:无法将类型为'Manina.Windows.Forms.ImageListViewItem'的对象强制转换为'System.Collections.Generic.IList`1 ”
答案 0 :(得分:1)
问题是您正在尝试将ImageListViewItem
投放到IList<ImageListViewItem>
。如果你想坚持合同,你需要创建一个包含这个项目的新列表。
我认为三元运算符和大量的转换在这里损害了可读性,所以如何使用辅助方法:
private IList<ImageListViewItem> GetItems(int flag)
{
IList<ImageListViewItem> items;
if (flag == 1)
{
items = imageListView1.Items
}
else
{
items = imageListView1.SelectedItems.Take(1).ToList();
}
return items;
}
当没有当前选择的项目而不是抛出异常时,这也将确保返回空列表。
答案 1 :(得分:0)
也许你想做这样的事情:
foreach (ImageListViewItem item in imageListView1.SelectedItems)
{
//Use you item here.
...
//In case flag is raised - break the loop after firs item use.
if(flag == 1)
break;
}