다음을 통해 공유


Windows Forms에서 지원하는 데이터 소스

일반적으로 데이터 바인딩은 데이터베이스에 저장된 데이터를 활용하기 위해 애플리케이션 내에서 사용되었습니다. Windows Forms 데이터 바인딩을 사용하면 특정 최소 요구 사항이 충족되는 한 데이터베이스의 데이터뿐만 아니라 배열, 컬렉션 등 다른 구조체의 데이터에 액세스할 수 있습니다.

바인딩할 구조체

Windows Forms에서 단순 개체(단순 바인딩)에서 ADO.NET 데이터 테이블 등의 복잡한 목록(복합 바인딩)에 이르기까지 다양한 구조체에 바인딩할 수 있습니다. 단순 바인딩의 경우 Windows Forms는 단순 개체의 퍼블릭 속성에 대한 바인딩을 지원합니다. Windows Forms 목록 기반 바인딩을 사용하려면 일반적으로 개체가 IList 인터페이스 또는 IListSource 인터페이스를 지원해야 합니다. 또한 BindingSource 구성 요소를 통해 바인딩하는 경우 IEnumerable 인터페이스를 지원하는 개체에 바인딩할 수 있습니다. 데이터 바인딩과 관련된 인터페이스에 대한 자세한 내용은 데이터 바인딩과 관련된 인터페이스를 참조하세요.

다음 목록은 Windows Forms에서 바인딩할 수 있는 구조체를 보여 줍니다.

BindingSource
BindingSource는 가장 일반적인 Windows Forms 데이터 원본이며 데이터 원본과 Windows Forms 컨트롤 간에 프록시 역할을 합니다. 일반적인 BindingSource 사용 패턴은 컨트롤을 BindingSource에 바인딩하고 BindingSource를 데이터 원본(예: ADO.NET 데이터 테이블 또는 비즈니스 개체)에 바인딩하는 것입니다. BindingSource는 해당 수준의 데이터 바인딩 지원을 가능하게 하고 개선하는 서비스를 제공합니다. 예를 들어, DataGridView, ComboBox 등의 Windows Forms 목록 기반 컨트롤은 IEnumerable 데이터 원본에 대한 바인딩을 직접 지원하지 않지만, BindingSource를 통해 바인딩하면 이 시나리오를 사용할 수 있습니다. 이 경우 BindingSource는 데이터 원본을 IList로 변환합니다.

단순 개체
Windows Forms는 Binding 형식을 사용하여 컨트롤 속성을 개체 인스턴스의 퍼블릭 속성에 데이터 바인딩하는 작업을 지원합니다. Windows Forms는 BindingSource가 사용될 때 개체 인스턴스에 ListControl 등의 목록 기반 컨트롤을 바인딩하는 작업도 지원합니다.

배열 또는 컬렉션
데이터 원본 역할을 하려면 목록은 IList 인터페이스를 구현해야 합니다. 한 가지 예로는 Array 클래스의 인스턴스인 배열이 있습니다. 배열에 대한 자세한 내용은 방법: 개체 배열 만들기(Visual Basic)를 참조하세요.

일반적으로 데이터 바인딩에 대한 개체 목록을 만드는 경우 BindingList<T>를 사용해야 합니다. BindingList<T>IBindingList 인터페이스의 일반 버전입니다. IBindingList 인터페이스는 양방향 데이터 바인딩에 필요한 속성, 메서드, 이벤트를 추가하여 IList 인터페이스를 확장합니다.

IEnumerable
Windows Forms 컨트롤은 BindingSource 구성 요소를 통해 바인딩된 경우에만 IEnumerable 인터페이스를 지원하는 데이터 원본에 바인딩할 수 있습니다.

ADO.NET 데이터 개체
ADO.NET은 바인딩에 적합한 다양한 데이터 구조를 제공합니다. 각 구조의 정교함과 복잡성은 다양합니다.

  • DataColumn. DataColumn은 여러 열이 테이블을 구성한다는 측면에서 DataTable의 필수 구성 요소입니다. 각 DataColumn에는 열에 포함되는 데이터 종류(예: 자동차를 설명하는 테이블의 자동차 브랜드)를 결정하는 DataType 속성이 있습니다. 컨트롤(예: TextBox 컨트롤의 Text 속성)을 데이터 테이블 내의 열에 단순 바인딩할 수 있습니다.

  • DataTable. DataTable은 ADO.NET의 행과 열이 있는 테이블 표현입니다. 데이터 테이블에 포함되는 두 가지 컬렉션은 지정된 테이블의 데이터 열을 나타내는 DataColumn 컬렉션(최종적으로 해당 테이블에 입력할 수 있는 데이터 종류 결정)과 지정된 테이블의 데이터 행을 나타내는 DataRow 컬렉션입니다. 컨트롤을 데이터 테이블에 포함된 정보에 복합 바인딩할 수 있습니다(예: 데이터 테이블에 DataGridView 컨트롤 바인딩). 그러나 DataTable에 바인딩하는 경우 실제로는 테이블의 기본 뷰에 바인딩됩니다.

  • DataView. DataView는 필터링되거나 정렬될 수 있는 단일 데이터 테이블의 사용자 지정된 뷰입니다. 데이터 뷰는 복합 바인딩된 컨트롤에서 사용하는 데이터 “스냅샷”입니다. 데이터 뷰 내에서 데이터에 단순 바인딩하거나 복합 바인딩할 수 있지만, 정리되고 업데이트되는 데이터 원본이 아닌 고정된 데이터 “그림”에 바인딩하고 있다는 점에 유의하세요.

  • DataSet. DataSet는 데이터베이스에 있는 데이터의 테이블, 관계 및 제약 조건의 컬렉션입니다. 데이터 세트 내 데이터에 단순 바인딩하거나 복합 바인딩할 수 있지만, DataSet의 기본 DataViewManager에 바인딩하고 있다는 점에 유의하세요(다음 글머리 기호 참조).

  • DataViewManager. DataViewManager는 전체 DataSet의 사용자 지정된 뷰이며 DataView와 유사하지만 관계가 포함됩니다. DataViewSettings 컬렉션을 사용하면 지정된 테이블에 대해 DataViewManager에 포함된 모든 뷰의 기본 필터와 정렬 옵션을 설정할 수 있습니다.

참고 항목