在所选列表视图项目中获取图像?

时间:2012-08-08 02:54:09

标签: c# winforms listview visual-c#-express-2010

这是我正在使用的,但我收到一个错误:

private void listView1_DoubleClick(object sender, EventArgs e)
{
    foreach (ListViewItem itm in listView1.SelectedItems)
    {
        pictureBox1.Image = System.Drawing.Image.FromFile(itm.SubItems[1].Text);
    }
}

我得到:InvalidArgument=Value of '1' is not valid for 'index'. Parameter name: index

如何解决此问题?

这就是我用列表视图填充图像列表中的图像(在属性项集合中添加)

for (int j = 0; j < this.imageList1.Images.Count; j++)
        {
            ListViewItem item = new ListViewItem();
            item.ImageIndex = j;
            this.listView1.Items.Add(item);
        }

3 个答案:

答案 0 :(得分:2)

listViewItems只有1个子项,它们似乎是空字符串(不是有效路径)。

ImageList不保留图像的路径信息。相反,它创建了一个嵌入在可执行文件中的副本。

请尝试使用此代码:

private void listView1_DoubleClick(object sender, EventArgs e)
{
    foreach (ListViewItem itm in listView1.SelectedItems)
    {
        int imgIndex = itm.ImageIndex;
        if ( imgIndex >= 0 && imgIndex < this.imageList1.images.Count)
        {
            pictureBox1.Image = this.imageList1.images[imgIndex];
        }
    }
}

答案 1 :(得分:0)

InvalidArgument=Value of '1' is not valid for 'index'. Parameter name: index'是您在SubItems集合中提供无效索引时会出现的错误。您可能没有超过1个子项目。尝试将代码更改为:

private void listView1_DoubleClick(object sender, EventArgs e)
{
    foreach (ListViewItem itm in listView1.SelectedItems)
    {
        pictureBox1.Image = System.Drawing.Image.FromFile(itm.SubItems[0].Text);
    }
}

答案 2 :(得分:0)

此代码对我有用:D

private void listView1_DoubleClick(对象发送者,EventArgs e)         {

        if (listView1.SelectedItems.Count > 0)
        {
            var item = listView1.SelectedItems[0];
            var img = item.ImageList.Images[item.ImageIndex];

            pictureBox1.Image = img;

        }
    }