检查foreach中的条件并指定列表

时间:2015-04-29 09:25:00

标签: c# winforms

我正在尝试创建一个图像编辑器,我正在使用 ImageListView Dll来显示所选图像,我有一个问题,在某些情况下我需要从一个列表和另一个情况中获取值值从另一个列表中获取。

我正在尝试如下

    foreach (ImageListViewItem item in ((flag == 1) ? imageListView1.Items : imageListView1.SelectedItems))
    {
        item.BeginEdit();
        using (Image img = Image.FromFile(item.FileName))
        {
            glb_namelist_arr.Add(item.FileName);
            Bitmap im=new Bitmap(item.FileName);
            glb_image_list_arr.Add(im);

        }
        item.Update();
        item.EndEdit();
    }

在这一行中,我收到了错误:

((flag == 1) ? imageListView1.Items : imageListView1.SelectedItems)

在JavaScript中,我可以使用eval()方法,但在这里我该怎么办?

2 个答案:

答案 0 :(得分:3)

我假设您无法隐式转换为...错误。是的,通常它们将被实现为不同的集合类型。源代码表明ImageListViewSelectedItemCollectionImageListViewItemCollection实现了IList<ImageListViewItem>

所以,你可以做到

var items = ((flag == 1) ? (IList<ImageListViewItem>)imageListView1.Items : (IList<ImageListViewItem>)imageListView1.SelectedItems);

foreach (ImageListViewItem item in items)
{
  ...
}

如果没有,请提供有关该问题的详细信息。与错误一样,您imageListView1.Items的{​​{1}}和imageListView1.SelectedItems以及文档/项目链接的类型是什么。

答案 1 :(得分:0)

检查foreach循环前的条件

List<ImageListViewItem> imageListViewItemList = new List<ImageListViewItem>();

if(flag==1)
{
    imageListViewItemList = imageListView1.Items;
}
else
{
    imageListViewItemList = imageListView1.SelectedItems;
}

foreach(ImageListViewItem item in imageListViewItemList)
{

    // your code here

}