VB.NET 2008/VB - 데이터 그리드 뷰

DataGridView 스타일 지정

본클라쓰 2011. 4. 26. 11:14

 

DataGridView 컨트롤을 사용하면 사용자가 컨트롤의 테두리 및 모눈선의 모양을 지정하여 사용자 환경을 향상시킬 수 있다.

 

컨트롤 내 셀의 테두리 스타일 외에도 모둔선 색과 컨트롤 테두리 스타일을 수정할 수 있다. 일반 셀, 행 머리글 셀 및 열 머리글 셀에 대해 다른 셀 테두리 스타일을 적용할 수도 있다.

 

 

모눈선 색을 변경하려면 GridColor 속성을 설정한다.

 

Me.dataGridView1.GridColor = Color.BlueViolet

 

 

테두리 스타일을 변경하려면 BorderStyle 속성을 BorderStyle 열거형 값 중 하나로 설정한다.

 

Me.dataGridView1.BorderStyle = BorderStyle.Fixed3D

 

 

셀의 테두리 스타일을 변경하려면 CellBorderStyle, RowHeadersBorderStyle ColumnHeadersBorderStyle 속성을 변경한다.

 

With Me.dataGridView1
    .CellBorderStyle = DataGridViewCellBorderStyle.None
    .RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
    .ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
End With

 

 

 

dataGridView 컨트롤 내의 각 셀은 텍스트 형식, 배경색, 전경색 및 글꼴과 같은 고유한 스타일을 가질 수 있다. 그러나 일반적으로는 여러 셀에서 특정한 스타일 특성을 공유한다.

 

스타일을 공유하는 셀 그룹에는 특정 행이나 열 내의 모든 셀, 특정 값을 포함하는 모든 셀 또는 컨트롤 내의 모든 셀이 포함될 수 있다. 이러한 그룹이 겹치기 때문에 각 셀에서는 여러 위치에서 스타일링 정보를 가져올 수 있다. 예를 들어, dataGridView 컨트롤 내의 모든 셀에 같은 글꼴을 사용하면서 통화 열의 셀에만 통화 형식을 사용하고 음수 값인 통화 셀에만 빨간 전경색을 사용할 수 있다.

 

dataGridViewCellStyle 클래스에는 비주얼 스타일에 관한 다음과 같은 속성이 있다.

 

- BackColor 및 ForeColor

- SelectionBackColor 및 SelectionForeColor

- Font

 

이 클래스에는 서식에 관한 다음과 같은 속성도 있다.

 

- Format 및 FormatProvider

- NullValue 및 DataSourceNullValue

- WrapMode

- Alignment

- Padding

 

 

 

dataGridView 요소에서 dataGridViewCellStyle 개체를 공유하여 스타일 정보가 불필요하게 중복되지 않도록 할 수 있다. 컨트롤, 열 및 행 수준에서 설정된 스타일은 각 수준 아래로 셀 수준까지 필터링되기 때문에 위의 수준과 다른 각 수준의 해당 스타일 속성만 설정하여 스타일 중복을 막을 수도 있다.

 

다음은 DataGridViewCellStyle 개체를 가져오거나 설정하는 기본 속성에 대해 설명한다.

 

- DefaultCellStyle : 전체 컨트롤, 열 또는 행 머리글 셀을 포함한 모든 셀에 사용되는 기본 스타일을 가져오거나 설정

- RowsDefaultCellStyle : 컨트롤의 모든 행에 사용되는 기본 셀 스타일을 가져오거나 설정

- AlternatingRowsDefaultCellStyle : 컨트롤의 교대로 반복되는 행에 사용되는 기본 셀 스타일을 가져오거나 설정

- RowHeadersDefaultCellStyle : 컨트롤의 행 머리글에 사용되는 기본 셀 스타일

- ColumnHeadersDefaultCellStyle : 컨트롤의 열 머리글에 사용되는 기본 셀 스타일

 

앞에서 언급한 대로 이전에 속성을 설정하지 않은 경우 스타일 속성 값을 가져오면 새 DataGridViewCellStyle 개체가 자동으로 인스턴스화된다. 이러한 개체가 불필요하게 만들어지지 않도록 하기 위해 행 및 열 클래스에는 DefaultCellStyle 속성이 설정되었는지 여부를 확인할 수 있는 HasDefaultCellStyle 속성이 있다. 마찬가지로, 셀 클래스에는 Style 속성이 설정되었는지 여부를 나타내는 HasStyle 속성이 있다.

 

 

 

DataGridViewCell은 InheritedStyle 속성에서 모양을 가져온다. 이 속성에서 반환되는 DataGridViewCellStyle 개체는 DataGridViewCellStyle 형식 속성의 계층 구조에서 값을 상속한다.

 

다음 다이어그램에서는 이 프로세스를 보여 준다.

 

 

 

 

셀의 스타일을 특정 값으로 사용자 지정하려면 DataGridView.CellFormatting 이벤트에 대한 처리기를 구현한다. 이 이벤트에 대한 처리기는 DataGridViewCellFormattingEventArgs 형식의 인수를 받는다. 이 개체에서는 DataGridView 컨트롤에서의 위치와 함께 서식이 지정되는 셀 값을 결정할 수 있는 속성이 있으며, 서식이 지정되는 셀의 InheritedStyle 속성 값으로 초기화되는 CellStyle 속성도 있다.

 

DataGridView.CellMouseEnter CellMouseLeave 같은 이벤트에 대한 응답으로 개별 셀 스타일을 동적으로 수정할 수도 있다. 예를 들어, CellMouseEnter 이벤트에 대한 처리기에서 셀의 Style 속성을 통해 검색된 셀 배경색의 현재 값을 저장한 다음 마우스를 해당 셀 위로 이동할 경우 셀이 강조 표시되도록 새로운 색으로 설정할 수 있다. 나중에 CellMouseLeave 이벤트에 대한 처리기에서 배경색을 원래 값으로 복원할 수 있다.

 

 

 

표 형식 데이터는 행의 배경색이 교대로 반복되는 장부 형식으로 표시되는 경우가 많다. 이 형식을 사용하면 특히 많은 열이 포함된 너비가 넓은 표에서 각 행의 셀을 쉽게 구분할 수 있다.

 

DataGridView 컨트롤을 사용하여 교대로 반복되는 행에 대해 완전히 스타일 정보를 지정할 수 있다. 이렇게 하면 배경색 외에도 전경색 및 글꼴과 같은 스타일 특성을 사용하여 교대로 반복되는 행을 구분할 수 있다.

 

교대로 반복되는 행 스타일을 설정하기 위해서는 DataGridView의 RowDefaultCellStyle AlterntingRowsDefaultCellStyle 속성에서 반환되는 DataGridViewCellStyle 개체의 속성을 설정한다.

 

With Me.dataGridView1
    .RowsDefaultCellStyle.BackColor = Color.Bisque
    .AlternatingRowsDefaultCellStyle.BackColor = Color.Beige
End With

 



DataGridView 컨트롤 및 컨트롤에 있는 특정 열의 DefaultCellStyle 속성을 사용하여 셀 값에 기본적인 형식을 지정하는 방법이다.

 

 

통화 및 날짜 값의 형식을 지정하려면 DataGridViewCellStyle 의 Format 속성을 설정한다.

 

Me.dataGridView1.Columns("UnitPrice").DefaultCellStyle.Format = "c"
Me.dataGridView1.Columns("ShipDate").DefaultCellStyle.Format = "d"

 

null 데이터베이스 값의 표시를 사용자 지정하려면 DataGridViewCellStyle의 NullValue 속성을 설정한다.

 

Me.dataGridView1.DefaultCellStyle.NullValue = "no entry"

 

 

텍스트 기반 셀에 단어 잘림 방지를 사용하려면 DataGridViewCellStyle의 WrapMode 속성을 DataGridViewTriState 열거형 값 중 하나로 설정한다. 다음은 DataGridView.DefaultCellStyle 속성을 사용하여 전체 컨트롤에 대해 줄 바꿈 모드를 설정한다.

 

Me.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True

 

 

DataGridView 셀의 텍스트 맞춤을 지정하려면 Alignment 속성을 DataGridViewContentAlignment 열거형 값 중 하나로 설정한다.

 

Me.dataGridView1.Columns("CustomerName").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight