2012-08-13 3 views
0

데이터 그리드 뷰를 설정하고이를 데이터에 연결하고 어댑터로 채우고 모두 잘 작동합니다. 내가 뭘하고 싶은지 데이터 그리드보기의 시작 부분에 열을 추가하고 현재 첫 번째 열의 파일 이름을 가진 첫 번째 열에 두 번째 열로 바람을 것입니다 이미지를 추가합니다.데이터 세트 테이블 아답터와 별도로 datagridview 열 채우기

필자는 열을 추가하고 이미 이미지 용으로 설정했으며 값이 설정되지 않은 경우 기본 이미지도 설정했습니다. column2에있는 내용을 읽는 방법을 알아내는 데 어려움을 겪고 있습니다. 그리고 파일 이름 (내 명명 체계와 일치시키기 위해 약간 편집 됨)을 사용하여 이미지를로드하여 column1에로드하는 중입니다. 그리드 뷰, datetettableadapter 또는 다른 장소에서이 작업을 수행해야하는지 알 수 없습니다. iterating 시도한 cell2 다음 cell1에 대한 이미지를로드하려면 행을 던져 봤지만 currentrow 설정할 수 없습니다.

CellFormating이 나에게 이상한 결과를 주었기 때문에 CellPainting을 사용하게되었습니다. 아래는 내가 사용하는 코드입니다. 셀 [0]은 이미지를 넣으려는 셀입니다. 셀 [1]은 파일 이름으로 사용하는 이미지의 이름입니다.

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
    { 
     string monsterName = ""; 

     try 
     { 
      if (this.dataGridView1.Columns[e.ColumnIndex].Name == "monsterNameDataGridViewTextBoxColumn") 
      { 
       if (e.Value != null && e.RowIndex > -1) 
       { 
        monsterName = (string)this.dataGridView1.Rows[e.RowIndex].Cells[1].Value; 
        this.dataGridView1.Rows[e.RowIndex].Cells[0].Value = new Bitmap(@"C:\Users\Chad\Pictures\Dark Summoner\C_" + monsterName + @".png"); 
       } 
      } 
     } 

     catch (ArgumentException) 
     { 
      toolStripStatusLabel1.Text = monsterName + " image file does not exist."; 
     } 

    } 

답변

0

몇 가지 방법으로 처리 할 수 ​​있습니다.

1) DataGridview의 CellFormatting 이벤트를 처리하고 거기에 셀의 이미지를 채 웁니다. 이벤트에는 서식을 지정하려고 시도하는 현재 행/열에 대한 액세스 권한이있는 매개 변수가 있습니다. 그래서 당신은 셀 2에서 이미지 파일을 읽고 여기에 기반하여 셀 1의 이미지를 설정할 수 있습니다.

2) 데이터 소스에 이미지 데이터를 미리 채 웁니다. 따라서 dataadapter가 DataTable을 채우는 경우, 데이터 테이블을로드 한 후 데이터 테이블에 이미지를로드하거나 채울 수 있습니다.

+0

포스터에서 제거되었습니다. –

관련 문제