2012-08-08 6 views
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); 
     } 
+0

있습니까? 어쩌면 당신은 itm.SubItems [0]을 찾고 있습니다. 대신 텍스트? –

+0

내가 그런 경우 다른 오류가 발생합니다. –

+0

내가 가지고있는 것은 모두 lisview의 2 개 항목입니다. –

답변

1

listViewItems에는 빈 문자열 (유효한 경로가 아님)처럼 보이는 하위 항목이 하나뿐입니다.

ImageList는 이미지의 경로 정보를 유지하지 않습니다. 대신 실행 파일에 포함 된 복사본을 만들었습니다.

대신이 코드를보십시오 : 당신은 각 항목이 2 개 이상의 하위 항목이 없는지 확인

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]; 
     } 
    } 
} 
+0

대단히 감사합니다 ..... –

+0

, 언제든지 :) 행운을 빈다. –

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); 
    } 
} 
+0

그러면이 오류가 발생합니다. 경로가 올바른 형식이 아닙니다. –

+0

그건 별개의 문제입니다. 항목의 텍스트는 무엇입니까? 명백하게 그것은 유효한 경로가 아닙니다. – Dan

+0

글쎄, 목록보기에서 잘 보이기 때문에해야만합니다. –

관련 문제