2012-08-03 4 views
1

저는 애니메이션 GIF (움직이는 로딩 서클)를 포함 할 수있는 첫 번째 열의 DataGridView가 있습니다. 애니메이션 부분의 작업을하려면 내가 100ms마다 틱이 방법SplitContainer 내의 DataGridView가 다시 칠하지 못함

private void timGifAnimation_Tick(object sender, EventArgs e) 
    { 
     if(this.dataGridView1.Rows.Count > 0 && current >= 0 && current < this.dataGridView1.Rows.Count) 
     { 
      this.dataGridView1.Rows[current].Cells[0].Value = this.picProcessing.Image; 
      this.dataGridView1.InvalidateCell(0, current); 
     } 
    } 

나는 SplitContainer가 내 DataGridView에 넣을 때까지이 매혹처럼 일 호출하는 Forms.Timer를 사용합니다. InvalidateCell에 대한 호출로 셀이 더 이상 다시 표시되지 않습니다. GIF 애니메이션이 작동하는 유일한 시점은 윈도우의 크기가 변경되거나 버튼 위로 마우스를 올려 놓았을 때입니다 (호버링을 한 번 다시 그리면서 마우스를 단추 다시 그리기에서 이동 시킴). 다시). 디버깅 할 때 위의 메서드는 계속 호출되며 셀을 다시 채우지 않습니다.

+0

gridview가 포함 된 패널의 크기가 해당 패널의 최소 크기 (splitcontainer에 설정된 크기)보다 작습니까? – roken

답변

0

컨트롤 또는 컨트롤의 일부를 무효화하는 것은 해당 영역을 다시 칠할 필요가 있다고 표시합니다. 동기 재 칠을 강제하려면 컨트롤에서 Update()를 호출해야합니다. 그렇지 않으면 페인트 메시지가 다음에 올 때마다 무효화 된 셀이 다시 칠합니다.

dataGridView1.Update(); 
+0

불행히도 작동하지 않았다 :( – Nait

관련 문제