2011-02-24 9 views
1

DataGridView에서 특정 셀의 색을 다른 셀의 값과 동일하게 변경하려고합니다. 슬프게도, 그것은 작동하지 않습니다. 이것은 내가 일을해야한다고 생각하는 코드입니다 :DataGridView의 특정 셀 스타일 변경

for (int i = 0; i < dataGridView2.Rows.Count; i++) 
{ 
    for (int j = 1; j < 8; j++) 
     for (int k = 8; k < 20; k++) 
      if (dataGridView2.Rows[i].Cells[j].Value == dataGridView2.Rows[i].Cells[k].Value) 
       dataGridView2.Rows[i].Cells[j].Style.BackColor = Color.Green; 
} 
dataGridView2.Refresh(); 

모든 열이 대해서 typeof (int)를 사용하여 만든 그래서 유형의 문제가되지 않습니다. 또한 디버깅은 프로그램이 if 절을 입력했지만 아직 변경 사항을 표시하지 않는다는 것을 보여줍니다.

미리 도움을 청하십시오.

+1

프로그램이 if 절을 입력하는 것이 긍정적입니까? DataGridview의 특정 셀에서 BackColor를 설정해 보았는데 정상적으로 작동했습니다. – Yetti

+0

이 코드를 작성하는 곳은 어디입니까? – V4Vendetta

답변

1

내가 작업하는 앱 중 하나에서이 작업을 수행하고 있습니다. 거의 알 수 있듯이 DataGridView.CellFormatting 이벤트를 재정의하는 것이 가장 좋은 방법입니다.

내 응용 프로그램에는 데이터 소스의 각 행에 4 개의 부울 속성이 있습니다. 각 속성에 대해 색 상자를 추가하고 싶습니다.

void uxGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 
     try 
     { 
      var item = uxGrid.Rows[e.RowIndex].DataBoundItem as NiftyThing; 
      if(item != null) 
      { 
       if(item.Property1) 
       { 
        e.CellStyle.SelectedBackColor = e.CellStyle.BackColor = Color.Red; 
        //Don't display 'True' or 'False' 
        e.Value = string.Empty; 
       } 
       else if(item.Property2) 
       ... 
      }  
     } 
     catch { } 
    } 

나는 도움이 되길 바랍니다.

+0

그 방법은 내가 해냈어. –

관련 문제