2014-03-26 5 views
2

가상 모드에서 DataGridView 컨트롤을 사용하는 방법을 배우는 중입니다. 리스트 배열을 사용하여 크거나 작을 수있는 텍스트 파일의 내용을 저장합니다. DataGridView의 한 특정 열은 해당 셀의 텍스트 내용을 기반으로 변경된 셀의 배경색을 가져야합니다. DataGridView의 각 행을 채 웁니다가상 모드에서 'DataGridView'의 셀 배경색 변경

private void datagridview_CellValueNeeded(
    object sender, DataGridViewCellValueEventArgs e) 

: 그래서, 이벤트 핸들러를 가지고있다. 내 문제는 어디 세포가 각 행 (지금은 가상 모드에서)로 생성되었는지배경색을 설정하는 코드를 어디에 삽입해야할지 모르겠다.

datagridview[e.ColumnIndex, e.RowIndex].Style.SelectionBackColor = 
    component_color; 

component_color 소정 하였다 여기서

나는 특정 항목 ID를 먼저 확인하는 CellValueNeeded 대한 이벤트 핸들러를 이용하여 다음과 같이 셀의 배경색을 설정하려고. 그러나이 방법은 색상을 변경하지 않았습니다. CellEnter, CellLeave, CellValueChanged, RowsAddedRowLeave과 같은 다른 이벤트도 처리하려고 시도했습니다. 그러나 디버깅 작업을 통해 CellValueNeeded 이벤트 이전에 이러한 이벤트가 절대 실행되지 않거나 실행되지 않는다는 것을 알게되었습니다.

따라서 CellValueNeeded 이벤트를 처리하여 특정 열에 생성 된대로 셀의 배경색을 설정할 수 있습니까? 아니면 다른 이벤트를 처리하여이 작업을 수행해야합니까?

답변

4

DataGridView.CellFormatting 이벤트를 처리해야합니다. 예를 들면 :

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 
    if (e.ColumnIndex == 3 && e.Value == targetValue) 
     e.CellStyle.BackColor = Color.Red; 
    else 
     e.CellStyle.BackColor = SystemColors.Window; 
} 

건배

관련 문제