2009-08-31 14 views
6

DataGridViewDataSource을 DataBinding으로 설정하여 채 웁니다.DataGridView에서 특정 행을 강조 표시하는 방법

이제 행 자체의 일부 값에 따라 다른 배경색을 갖는 DataGridView의 특정 행을 갖기를 원합니다.

어떻게하면이 작업을 수행 할 수 있습니까?

+0

의 색상이나 스타일을 변경하려면 RowPrePaint를 사용할 수 있습니다. http://stackoverflow.com/questions/1078782/c-iterate-over-datagridview-change-row-color – rahul

답변

7

이 개념은 당신이 그리드에서 이벤트를 구독한다는 것입니다 좋은 예 here.

있다. 셀이 채워지면 이벤트가 발생하고 값을 기준으로 셀을 서식 지정할 수 있습니다.

1

DataGridview의 CellFormatting 이벤트 처리기에서 원하는 모든 행에 기본 배경색을 설정할 수 있습니다.

private void MyDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 

     if (e.RowIndex == rowIndexToHighlight) 
     { 
      e.CellStyle.BackColor = Color.Green; 
     } 

    } 
+1

-1이 예제는 성능에 미치는 영향이 매우 낮으므로 데이터 바인딩을 사용하는 경우 데이터 그리드는 중복 행 레코드를 유지해야합니다. Psasik의 예제는 행을 공유하지 않도록합니다. – Kleinux

+0

@Kleinux : 중복 행 레코드를 유지하는 것에 대한 흥미로운 설명입니다. 이것이 왜 그렇게 설명 할 수 있겠습니까? 감사합니다 – Andy

+1

당신이 문서를 보면 공유 대 비공개 행에 대한 언급이 있습니다. 위의 코드는 그리드 뷰가 데이터 소스의 모든 행에 대한 실제 DataGridViewRow 레코드를 작성하도록합니다. 이 행은 셀 값의 의미에서 중복되지는 않지만 여전히 해당 데이터 소스를 읽을 수 있지만 달리 필요한 스타일 정보 때문에 존재하지 않아도됩니다. 바라기를 나는 나의 코멘트를 조금 더 분명하게했다. 이것은 좋은 자습서입니다. http://msdn.microsoft.com/en-us/library/ha5xt0d9.aspx – Kleinux

1

당신은 당신이이 질문에서 몇 가지 유용한 정보를 찾을 수 있다고 생각합니다 전체 행

관련 문제