这是我正在使用的,但我收到一个错误:
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);
}
答案 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;
}
}