1

这是我正在使用的,但出现错误:

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);
        }
4

3 回答 3

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];
        }
    }
}
于 2012-08-08T03:13:01.613 回答
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);
    }
}
于 2012-08-08T03:06:03.583 回答
0

这段代码对我有用:D

私人无效listView1_DoubleClick(对象发送者,EventArgs e){

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

            pictureBox1.Image = img;

        }
    }
于 2018-08-05T05:45:15.607 回答