DataGridView 컨트롤 아키텍처(Windows Forms)

DataGridView 컨트롤 및 관련 클래스는 테이블 형식 데이터를 표시하고 편집하기 위한 유연하고 확장 가능한 시스템으로 설계되었습니다. 이러한 클래스는 모두 System.Windows.Forms 네임스페이스에 포함되며 모두 “DataGridView” 접두사로 이름이 지정됩니다.

아키텍처 요소

기본 DataGridView 도우미 클래스는 DataGridViewElement에서 파생됩니다. 다음 개체 모델은 DataGridViewElement 상속 계층 구조를 보여 줍니다.

DataGridViewElement 개체 모델 계층 구조를 보여 주는 다이어그램.

DataGridViewElement 클래스는 부모 DataGridView 컨트롤에 대한 참조를 제공하고 DataGridViewElementStates 열거형에서 값의 조합을 나타내는 값을 보유하는 State 속성이 있습니다.

다음 단원에서는 DataGridView 보조 클래스에 대해 더 자세히 설명합니다.

DataGridViewElementStates

DataGridViewElementStates 열거는 다음 값을 포함합니다.

이 열거형의 값을 비트 논리 연산자와 결합할 수 있으므로 State 속성이 한 번에 둘 이상의 상태를 표현할 수 있습니다. 예를 들어, DataGridViewElement은(는) 동시에 Frozen, SelectedVisible일 수 있습니다.

셀 및 밴드

DataGridView 컨트롤은 두 가지 기본 개체인 셀과 밴드로 구성됩니다. 모든 셀은 DataGridViewCell 기본 클래스에서 파생됩니다. 두 종류의 밴드 DataGridViewColumnDataGridViewRow은(는) 둘 다 DataGridViewBand 기본 클래스에서 파생됩니다.

DataGridView 컨트롤은 여러 클래스와 상호 운용되지만 가장 일반적으로 발생하는 클래스는 DataGridViewCell, DataGridViewColumnDataGridViewRow입니다.

DataGridViewCell

셀은 DataGridView에 대한 상호 작용의 기본 단위입니다. 표시는 셀을 중심으로 하며 데이터 입력은 셀을 통해 수행되는 경우가 많습니다. DataGridViewRow 클래스의 Cells 컬렉션을 사용하여 셀에 액세스할 수 있으며 DataGridView 컨트롤의 SelectedCells 컬렉션을 사용하여 선택한 셀에 액세스할 수 있습니다. 다음 개체 모델은 이 사용량을 보여 주고 DataGridViewCell 상속 계층 구조를 보여 줍니다.

DataGridViewCell 개체 모델 계층 구조를 보여 주는 다이어그램.

DataGridViewCell 형식은 모든 셀 형식이 파생되는 추상 기본 클래스입니다. DataGridViewCell 및 해당 파생 형식은 Windows Forms 컨트롤이 아니라 일부 호스트 Windows Forms 컨트롤입니다. 셀에서 지원하는 모든 편집 기능은 일반적으로 호스트된 컨트롤에서 처리됩니다.

DataGridViewCell 개체는 Windows Forms 컨트롤과 같은 방식으로 자체 모양 및 그리기 기능을 제어하지 않습니다. 대신 DataGridView은(는) DataGridViewCell 개체의 모양을 담당합니다. DataGridView 컨트롤의 속성 및 이벤트와 상호 작용하여 셀의 모양과 동작에 크게 영향을 줄 수 있습니다. DataGridView 컨트롤의 기능을 벗어나는 사용자 지정에 대한 특별한 요구 사항이 있는 경우 DataGridViewCell 또는 자식 클래스 중 하나에서 파생되는 고유한 클래스를 구현할 수 있습니다.

다음 목록에서는 DataGridViewCell에서 파생된 클래스를 보여 줍니다.

DataGridViewColumn

DataGridView 컨트롤의 연결된 데이터 저장소 스키마는 DataGridView 컨트롤의 열에 표시됩니다. Columns 컬렉션을 사용하여 DataGridView 컨트롤의 열에 액세스할 수 있습니다. SelectedColumns 컬렉션을 사용하여 컨트롤의 선택한 열에 액세스할 수 있습니다. 다음 개체 모델은 이 사용량을 보여 주고 DataGridViewColumn 상속 계층 구조를 보여 줍니다.

DataGridViewColumn 개체 모델 계층 구조를 보여 주는 다이어그램.

일부 키 셀 형식에는 해당 열 형식이 있습니다. 이러한 클래스는 DataGridViewColumn 기본 클래스에서 파생됩니다.

다음 목록에서는 DataGridViewColumn에서 파생된 클래스를 보여 줍니다.

DataGridView 편집 컨트롤

고급 편집 기능을 지원하는 셀은 일반적으로 Windows Forms 컨트롤에서 파생된 호스트된 컨트롤을 사용합니다. 이러한 컨트롤은 IDataGridViewEditingControl 인터페이스도 구현합니다. 다음 개체 모델은 이러한 컨트롤의 사용을 보여 줍니다.

DataGridView 편집 컨트롤 개체 모델 계층 구조를 보여 주는 다이어그램.

DataGridView 컨트롤과 함께 제공되는 편집 컨트롤은 다음과 같습니다.

고유한 편집 컨트롤을 만드는 방법에 대한 자세한 내용은 방법: Windows Forms DataGridView 셀에서 컨트롤 호스팅을 참조하세요.

다음 표에서는 셀 형식, 열 형식 및 편집 컨트롤 간의 관계를 보여 줍니다.

셀 형식 호스트된 컨트롤 열 유형
DataGridViewButtonCell 해당 없음 DataGridViewButtonColumn
DataGridViewCheckBoxCell 해당 없음 DataGridViewCheckBoxColumn
DataGridViewComboBoxCell DataGridViewComboBoxEditingControl DataGridViewComboBoxColumn
DataGridViewImageCell 해당 없음 DataGridViewImageColumn
DataGridViewLinkCell 해당 없음 DataGridViewLinkColumn
DataGridViewTextBoxCell DataGridViewTextBoxEditingControl DataGridViewTextBoxColumn

DataGridViewRow

DataGridViewRow 클래스는 DataGridView 컨트롤이 연결된 데이터 저장소에서 레코드의 데이터 필드를 표시합니다. Rows 컬렉션을 사용하여 DataGridView 컨트롤의 행에 액세스할 수 있습니다. SelectedRows 컬렉션을 사용하여 선택한 행에 액세스할 수 있습니다. 다음 개체 모델은 이 사용량을 보여 주고 DataGridViewRow 상속 계층 구조를 보여 줍니다.

DataGridViewRow 개체 모델 계층 구조를 보여 주는 다이어그램.

일반적으로 필요하지는 않지만 DataGridViewRow 클래스에서 고유한 형식을 파생시킬 수 있습니다. DataGridView 컨트롤에는 해당 DataGridViewRow 개체의 동작을 사용자 지정하기 위한 여러 행 관련 이벤트 및 속성이 있습니다.

DataGridView 컨트롤의 AllowUserToAddRows 속성을 사용하도록 설정하면 새 행을 추가하기 위한 특수 행이 마지막 행으로 나타납니다. 이 행은 Rows 컬렉션의 일부이지만 주의가 필요할 수 있는 특별한 기능이 있습니다. 자세한 내용은 Windows Forms DataGridView 컨트롤에서 새 레코드에 대한 행 사용을 참조하세요.

참고 항목