2016-08-09 3 views
0

DataGridView를 사용하여 작업하고 있는데 선택된 열에 가운데 맞춤 텍스트를 표시해야하는 시나리오가 있습니다. 머리글 가운데 정렬 텍스트를 설정할 수 있지만 행 셀 및 조건은 설정해야합니다. 어떻게 알아낼 수 없습니까?Vb.Net DataGridView에서 가운데 ​​정렬 셀 텍스트

은 가정하자 나는 다른 색 구성표를 설정 관리해야 CellFormattingEvent에서 내가 그림 아래에 주어진 내 데이터를 표시 할 Type 칼럼의 기지에 3 열, ID ,Name,Type 4 행,

있습니다.

Private Sub grdDetailsNew_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles grdFruitDetailsNew.CellFormatting 
    Try 
     If e.RowIndex > -1 Then 
      If grdDetailsNew.Rows.Count > 0 Then 
       If grdDetailsNew.Rows(e.RowIndex).Cells("Type").Value = 1 Then 
        e.CellStyle.BackColor = Color.FromArgb(253, 192, 97) 
        e.CellStyle.Font = New Font(e.CellStyle.Font.FontFamily, 17, FontStyle.Regular) 
       ElseIf grdDetailsNew.Rows(e.RowIndex).Cells("Type").Value = 2 Then 
        e.CellStyle.BackColor = Color.FromArgb(255, 249, 237) 
        e.CellStyle.Font = New Font(e.CellStyle.Font.FontFamily, 16, FontStyle.Regular) 
       Else 
        e.CellStyle.BackColor = Color.FromArgb(255, 255, 255) 
        e.CellStyle.Font = New Font(e.CellStyle.Font.FontFamily, 15, FontStyle.Regular) 
       End If 
      End If 
     End If 

    Catch ex As Exception 
     WriteToLog(ex) 
    End Try 
End Sub 
Private Sub grdDetailsNew_CellPainting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles grdFruitDetailsNew.CellPainting 
    Try 

     If e.RowIndex > -1 AndAlso e.ColumnIndex > -1 Then 
      If e.ColumnIndex = 2 AndAlso grdDetailsNew.Rows(e.RowIndex).Cells("Type").Value = 1 Then 
       e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 
      End If 
     End If 

    Catch ex As Exception 

    End Try 
End Sub 

답변

1

셀 서식 이벤트 내에 e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter을 추가하기 만하면됩니다. 그리고 페인트 이벤트에서 제거하십시오.

예 :

Private Sub DataGridView1_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting 
    Dim type = CInt(CType(sender, DataGridView).Rows(e.RowIndex).Cells("type").Value) 
    If type = 1 andalso e.ColumnIndex = 1 Then e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 
End Sub 
+0

아니, 전체 행하지만 행 유형 필드를 찾은 첫 번째 열을 포맷 예를 추가 한 특정 조건 – DareDevil

+0

의 특정 열 사실은 모두 = 1 – FloatingKiwi

+1

경우 페인트 이벤트에 올바른 코드가있는 것 같습니다. 대신 셀 서식 핸들러로 옮겨보십시오. – FloatingKiwi

관련 문제