Windows Forms DataGridView 컨트롤의 열 형식

DataGridView 컨트롤은 여러 열 형식을 사용하여 해당 정보를 표시하고 사용자가 정보를 수정하거나 추가할 수 있도록 합니다.

DataGridView 컨트롤을 바인딩하고 AutoGenerateColumns속성을 true(으)로 설정하면 바인딩된 데이터 원본에 포함된 데이터 형식에 적합한 기본 열 형식을 사용하여 열이 자동으로 생성됩니다.

열 클래스의 인스턴스를 직접 만들어 Columns 속성에서 반환된 컬렉션에 추가할 수도 있습니다. 이러한 인스턴스를 바인딩되지 않은 열로 사용하거나 수동으로 바인딩할 수 있습니다. 예를 들어 수동으로 바인딩된 열은 한 형식의 자동으로 생성된 열을 다른 형식의 열로 바꾸려는 경우에 유용합니다.

다음 표에서는 DataGridView 컨트롤에서 사용할 수 있는 다양한 열 클래스에 대해 설명합니다.

클래스 Description
DataGridViewTextBoxColumn 텍스트 기반 값과 함께 사용됩니다. 숫자 및 문자열에 바인딩할 때 자동으로 생성됩니다.
DataGridViewCheckBoxColumn BooleanCheckState 값과 함께 사용됩니다. 이러한 형식의 값에 바인딩할 때 자동으로 생성됩니다.
DataGridViewImageColumn 이미지를 표시하는 데 사용됩니다. 바이트 배열, Image 개체 또는 Icon 개체에 바인딩할 때 자동으로 생성됩니다.
DataGridViewButtonColumn 셀에 단추를 표시하는 데 사용됩니다. 바인딩할 때 자동으로 생성되지 않습니다. 일반적으로 바인딩되지 않은 열로 사용됩니다.
DataGridViewComboBoxColumn 셀에 드롭다운 목록을 표시하는 데 사용됩니다. 바인딩할 때 자동으로 생성되지 않습니다. 일반적으로 수동으로 데이터 바인딩됩니다.
DataGridViewLinkColumn 셀에 링크를 표시하는 데 사용됩니다. 바인딩할 때 자동으로 생성되지 않습니다. 일반적으로 수동으로 데이터 바인딩됩니다.
사용자 지정 열 형식 DataGridViewColumn 클래스 또는 파생 클래스를 상속하여 사용자 지정 모양, 동작 또는 호스트된 컨트롤을 제공하여 고유한 열 클래스를 만들 수 있습니다. 자세한 내용은 방법: Windows Forms DataGridView 컨트롤에서 동작 및 모양을 확장하여 셀과 열 사용자 지정을 참조하세요.

이러한 열 형식은 다음 섹션에서 자세히 설명합니다.

DataGridViewTextBoxColumn

DataGridViewTextBoxColumn은(는) 숫자 및 문자열과 같은 텍스트 기반 값에 사용할 범용 열 형식입니다. 편집 모드에서 TextBox 컨트롤이 활성 셀에 표시되므로 사용자가 셀 값을 수정할 수 있습니다.

셀 값은 표시할 문자열로 자동으로 변환됩니다. 사용자가 입력하거나 수정한 값은 자동으로 구문 분석되어 적절한 데이터 형식의 셀 값을 만듭니다. DataGridView 컨트롤의 CellFormattingCellParsing 이벤트를 처리하여 이러한 변환을 사용자 지정할 수 있습니다.

열의 셀 값 데이터 형식은 열의 ValueType 속성에 지정됩니다.

DataGridViewCheckBoxColumn

DataGridViewCheckBoxColumn은(는) BooleanCheckState 값과 함께 사용됩니다. Boolean 값은 ThreeState 속성 값에 따라 2개 상태 또는 3개 상태 확인란으로 표시됩니다. 열이 CheckState 값에 바인딩된 경우 ThreeState 속성 값은 기본적으로 true입니다.

일반적으로 확인란 셀 값은 스토리지용이거나 다른 데이터와 같거나 대량 작업 수행용입니다. 사용자가 확인란 셀을 클릭할 때 즉시 응답하려는 경우 CellClick 이벤트를 처리할 수 있지만 이 이벤트는 셀 값이 업데이트되기 전에 발생합니다. 클릭 시 새 값이 필요한 경우 한 가지 옵션은 현재 값을 기준으로 예상되는 값을 계산하는 것입니다. 또 다른 방법은 변경 내용을 즉시 커밋하고 CellValueChanged 이벤트에 응답하도록 처리하는 것입니다. 셀을 클릭할 때 변경 내용을 커밋하려면 CurrentCellDirtyStateChanged 이벤트를 처리해야 합니다. 처리기에서 현재 셀이 확인란 셀인 경우 CommitEdit 메서드를 호출하고 Commit 값을 전달합니다.

DataGridViewImageColumn

DataGridViewImageColumn은(는) 이미지를 표시하는 데 사용됩니다. 이미지 열은 데이터 원본에서 자동으로 채워지거나, 바인딩되지 않은 열에 대해 수동으로 채워지거나, CellFormatting 이벤트에 대한 처리기에 동적으로 채워질 수 있습니다.

데이터 원본에서 이미지 열의 자동 채우기는 Image 클래스에서 지원하는 모든 형식과 Microsoft® Access 및 Northwind 샘플 데이터베이스에서 사용하는 OLE Picture 형식을 포함하여 다양한 이미지 형식의 바이트 배열에서 작동합니다.

이미지 열을 수동으로 채우는 것은 사용자 지정된 모양으로 DataGridViewButtonColumn 기능을 제공하려는 경우에 유용합니다. DataGridView.CellClick 이벤트를 처리하여 이미지 셀 내의 클릭에 응답할 수 있습니다.

CellFormatting 이벤트에 대한 처리기에서 이미지 열의 셀을 채우는 것은 이미지 형식이 아닌 계산 값 또는 값에 대한 이미지를 제공하려는 경우에 유용합니다. 예를 들어 문자열 값(예: "high", "middle""low")과 아이콘으로 표시하려는 “위험” 열이 있을 수 있습니다. 또는 이미지의 이진 콘텐츠가 아닌 로드해야 하는 이미지의 위치를 포함하는 “이미지” 열이 있을 수 있습니다.

DataGridViewButtonColumn

DataGridViewButtonColumn을(를) 사용하여 단추가 포함된 셀 열을 표시할 수 있습니다. 이는 주문 또는 자식 레코드를 별도의 창에 표시하는 등 사용자가 특정 레코드에 대한 작업을 쉽게 수행할 수 있는 방법을 제공하려는 경우에 유용합니다.

단추 열은 DataGridView 컨트롤을 데이터 바인딩할 때 자동으로 생성되지 않습니다. 단추 열을 사용하려면 단추 열을 수동으로 만들고 DataGridView.Columns 속성에서 반환된 컬렉션에 추가해야 합니다.

DataGridView.CellClick 이벤트를 처리하여 단추 셀에서 사용자 클릭에 응답할 수 있습니다.

DataGridViewComboBoxColumn

DataGridViewComboBoxColumn을(를) 사용하여 드롭다운 목록 상자가 포함된 셀 열을 표시할 수 있습니다. 이는 Northwind 샘플 데이터베이스에 있는 Products 테이블의 범주 열과 같은 특정 값만 포함할 수 있는 필드의 데이터 항목에 유용합니다.

모든 셀에 사용되는 드롭다운 목록은 ComboBox 드롭다운 목록을 채우는 것과 동일한 방식으로 채울 수 있습니다. 방법은 Items 속성에서 반환된 컬렉션을 통해 채우거나 DataSource, DisplayMemberValueMember 속성을 통해 데이터 원본에 바인딩하는 것입니다. 자세한 내용은 ComboBox 컨트롤을 참조하세요.

System.Windows.Forms.DataGridViewComboBoxColumnDataPropertyName 속성을 설정하여 DataGridView 컨트롤에서 사용하는 데이터 원본에 실제 셀 값을 바인딩할 수 있습니다.

콤보 상자는 DataGridView 컨트롤을 데이터 바인딩할 때 자동으로 생성되지 않습니다. 콤보 상자를 사용하려면 콤보 상자를 수동으로 만들고 Columns 속성에서 반환된 컬렉션에 추가해야 합니다.

DataGridViewLinkColumn

DataGridViewLinkColumn을(를) 사용하여 하이퍼링크가 포함된 셀 열을 표시할 수 있습니다. 이는 데이터 원본의 URL 값 또는 자식 레코드가 있는 창을 여는 것과 같은 특수 동작에 대한 단추 열의 대안으로 유용합니다.

링크 열은 DataGridView 컨트롤을 데이터 바인딩할 때 자동으로 생성되지 않습니다. 링크 열을 사용하려면 링크 열을 수동으로 만들고 Columns 속성에서 반환된 컬렉션에 추가해야 합니다.

CellContentClick 이벤트를 처리하여 링크에 대한 사용자 클릭에 응답할 수 있습니다. 이 이벤트는 사용자가 셀의 아무 곳이나 클릭할 때 발생하는 CellClickCellMouseClick 이벤트와 구별됩니다.

DataGridViewLinkColumn 클래스는 링크가 클릭되기 전, 도중 및 클릭한 후의 모양을 수정하기 위한 몇 가지 속성을 제공합니다.

참고 항목