Share via


연습: 조회 데이터 바인딩을 지원하는 Windows Forms 사용자 정의 컨트롤 만들기

업데이트: 2011년 5월

Windows 폼에 데이터를 표시할 때 도구 상자에서 기존 컨트롤을 선택하거나, 응용 프로그램에 표준 컨트롤에서 사용할 수 없는 기능이 필요한 경우 사용자 정의 컨트롤을 제작할 수 있습니다. 이 연습에서는 LookupBindingPropertiesAttribute를 구현하는 컨트롤을 만드는 방법을 보여 줍니다. LookupBindingPropertiesAttribute를 구현하는 컨트롤은 데이터에 바인딩될 수 있는 세 개의 속성을 포함할 수 있습니다. 이러한 컨트롤은 ComboBox와 유사합니다.

컨트롤 제작에 대한 자세한 내용은 디자인할 때 Windows Forms 컨트롤 개발을 참조하십시오.

데이터 바인딩 시나리오에서 사용할 컨트롤을 제작할 때 다음 데이터 바인딩 특성 중 하나를 구현해야 합니다.

데이터 바인딩 특성 사용

TextBox와 같이 데이터의 단일 열(또는 속성)을 표시하는 단순 컨트롤에서 DefaultBindingPropertyAttribute를 구현합니다. 자세한 내용은 연습: 단순 데이터 바인딩을 지원하는 Windows Forms 사용자 정의 컨트롤 만들기를 참조하십시오.

DataGridView와 같이 데이터의 목록(또는 테이블)을 표시하는 컨트롤에서 ComplexBindingPropertiesAttribute를 구현합니다. 자세한 내용은 연습: 복합 데이터 바인딩을 지원하는 Windows Forms 사용자 정의 컨트롤 만들기를 참조하십시오.

ComboBox와 같이 데이터의 목록(또는 테이블)뿐만 아니라 단일 열이나 속성도 표시해야 하는 컨트롤에서 LookupBindingPropertiesAttribute를 구현합니다. 이 프로세스는 이 연습 페이지에 설명되어 있습니다.

이 연습에서는 두 테이블의 데이터에 바인딩하는 조회 컨트롤을 만듭니다. 이 예제에서는 Northwind 샘플 데이터베이스의 Customers와 Orders 테이블을 사용합니다. 조회 컨트롤은 Orders 테이블의 CustomerID 필드에 바인딩되고 이 값을 사용하여 Customers 테이블의 CompanyName을 조회합니다.

이 연습을 통해 다음과 같은 작업 방법을 배웁니다.

  • Windows Forms 응용 프로그램을 만듭니다.

  • 프로젝트에 새 사용자 정의 컨트롤을 추가합니다.

  • 사용자 정의 컨트롤을 시각적으로 디자인합니다.

  • LookupBindingProperty 특성을 구현합니다.

  • 데이터 소스 구성 마법사를 사용하여 데이터 집합을 만듭니다.

  • 데이터 소스 창에 있는 Orders 테이블의 CustomerID 열을 설정하여 새 컨트롤을 사용합니다.

  • 폼을 만들어 새 컨트롤에서 데이터를 표시합니다.

사전 요구 사항

이 연습을 완료하려면 다음과 같은 요건이 필요합니다.

Windows 응용 프로그램 만들기

첫 단계에서는 Windows 응용 프로그램을 만듭니다.

새 Windows 프로젝트를 만들려면

  1. Visual Studio의 파일 메뉴에서 새 프로젝트를 만듭니다.

  2. 프로젝트 이름을 LookupControlWalkthrough로 지정합니다.

  3. Windows 응용 프로그램을 선택하고 확인을 클릭합니다. 자세한 내용은 Windows 기반 응용 프로그램 만들기를 참조하십시오.

    LookupControlWalkthrough 프로젝트가 만들어져 솔루션 탐색기에 추가됩니다.

프로젝트에 사용자 정의 컨트롤 추가

이 연습에서는 사용자 정의 컨트롤에서 조회 컨트롤을 만들어 LookupControlWalkthrough 프로젝트에 사용자 정의 컨트롤 항목을 추가합니다.

프로젝트에 사용자 정의 컨트롤을 추가하려면

  1. 프로젝트 메뉴에서 사용자 정의 컨트롤 추가를 선택합니다.

  2. 이름 영역에 LookupBox를 입력한 다음 추가를 클릭합니다.

    LookupBox 컨트롤이 솔루션 탐색기에 추가되고 디자이너에서 열립니다.

LookupBox 컨트롤 디자인

LookupBox 컨트롤을 디자인하려면

  • ComboBox도구 상자에서 사용자 정의 컨트롤의 디자인 화면으로 끌어 놓습니다.

필요한 데이터 바인딩 특성 추가

데이터 바인딩을 지원하는 조회 컨트롤의 경우 LookupBindingPropertiesAttribute를 구현할 수 있습니다.

LookupBindingProperties 특성을 구현하려면

  1. LookupBox 컨트롤을 코드 뷰로 전환합니다. 보기 메뉴에서 코드를 선택합니다.

  2. LookupBox에서 코드를 다음과 같이 바꿉니다.

    <System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")>
    Public Class LookupBox
    
        Public Property DataSource() As Object
            Get
                Return ComboBox1.DataSource
            End Get
            Set(ByVal value As Object)
                ComboBox1.DataSource = value
            End Set
        End Property
    
        Public Property DisplayMember() As String
            Get
                Return ComboBox1.DisplayMember
            End Get
            Set(ByVal value As String)
                ComboBox1.DisplayMember = value
            End Set
        End Property
    
        Public Property ValueMember() As String
            Get
                Return ComboBox1.ValueMember
            End Get
            Set(ByVal value As String)
                ComboBox1.ValueMember = value
            End Set
        End Property
    
        Public Property LookupMember() As String
            Get
                Return ComboBox1.SelectedValue.ToString()
            End Get
            Set(ByVal value As String)
                ComboBox1.SelectedValue = value
            End Set
        End Property
    End Class
    
    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")]
        public partial class LookupBox : UserControl
        {
            public object DataSource
            {
                get{ return comboBox1.DataSource; }
                set{ comboBox1.DataSource = value; }
            }
    
            public string DisplayMember
            {
                get{ return comboBox1.DisplayMember; }
                set{ comboBox1.DisplayMember = value; }
            }
    
            public string ValueMember
            {
                get{ return comboBox1.ValueMember; }
                set{ comboBox1.ValueMember = value; }
            }
    
            public string LookupMember
            {
                get{ return comboBox1.SelectedValue.ToString(); }
                set{ comboBox1.SelectedValue = value; }
            }
    
    
            public LookupBox()
            {
                InitializeComponent();
            }
        }
    }
    

    중요

    Visual C#을 사용 중인 경우에는 응용 프로그램의 네임스페이스와 일치하도록 네임스페이스를 업데이트합니다. 이 절차의 명명 규칙을 따르면 해당 네임스페이스는 LookupControlWalkthrough입니다.

  3. 빌드 메뉴에서 솔루션 빌드를 선택합니다.

데이터베이스에서 데이터 소스 만들기

이 단계에서는 Northwind 샘플 데이터베이스의 Customers와 Orders 테이블을 기반으로 데이터 소스 구성 마법사를 사용하여 데이터 소스를 만듭니다. 연결을 만들려면 Northwind 샘플 데이터베이스에 액세스할 수 있는 권한이 있어야 합니다. Northwind 샘플 데이터베이스 설치에 대한 자세한 내용은 방법: 샘플 데이터베이스 설치를 참조하십시오.

데이터 소스를 만들려면

  1. 데이터 메뉴에서 데이터 소스 표시를 클릭합니다.

  2. 데이터 소스 창에서 새 데이터 소스 추가를 선택하여 데이터 소스 구성 마법사를 시작합니다.

  3. 데이터 소스 형식 선택 페이지에서 데이터베이스를 선택하고 다음을 클릭합니다.

  4. 데이터 연결 선택 페이지에서 다음 중 하나를 수행합니다.

    • Northwind 샘플 데이터베이스에 대한 데이터 연결이 드롭다운 목록에 표시되면 해당 연결을 선택합니다.

      또는

    • 새 연결을 선택하여 연결 추가/수정 대화 상자를 시작합니다. 자세한 내용은 연결 추가/수정 대화 상자(일반)를 참조하십시오.

  5. 데이터베이스에 암호가 필요하면 중요한 데이터를 포함하는 옵션을 선택하고 다음을 클릭합니다.

  6. 응용 프로그램 구성 파일에 연결 문자열 저장 페이지에서 다음을 클릭합니다.

  7. 데이터베이스 개체 선택 페이지에서 테이블 노드를 확장합니다.

  8. Customers와 Orders 테이블을 선택한 다음 마침을 클릭합니다.

    NorthwindDataSet이 프로젝트에 추가되고 Customers와 Orders 테이블이 데이터 소스 창에 나타납니다.

LookupBox 컨트롤 사용을 위한 Orders 테이블의 CustomerID 열 설정

데이터 소스 창 내에서 항목을 폼에 끌기 전에 만들어질 컨트롤을 설정할 수 있습니다.

LookupBox 컨트롤에 바인딩되도록 CustomerID 열을 설정하려면

  1. 디자이너에서 Form1을 엽니다.

  2. 데이터 소스 창에서 Customers 노드를 확장합니다.

  3. Orders 노드(Fax 열 아래 Customers 노드 안)를 확장합니다.

  4. Orders 노드에서 드롭다운 화살표를 클릭한 다음 컨트롤 목록에서 자세히를 선택합니다.

  5. CustomerID 열(Orders 노드 안)에서 드롭다운 화살표를 클릭한 다음 사용자 지정을 선택합니다.

  6. 데이터 UI 사용자 지정 옵션 대화 상자에 있는 연결된 컨트롤 목록에서 LookupBox를 선택합니다.

  7. 확인을 클릭합니다.

  8. CustomerID 열에서 드롭다운 화살표를 클릭한 다음 LookupBox를 선택합니다.

폼에 컨트롤 추가

데이터 소스 창에서 Form1으로 항목을 끌어 와 데이터 바인딩된 컨트롤을 만들 수 있습니다.

Windows Form에 데이터 바인딩된 컨트롤 만들려면

  • 데이터 소스 창에서 Windows Form으로 Orders 노드를 끌어 놓고 LookupBox 컨트롤을 사용하여 CustomerID 열의 데이터를 표시하는지 확인합니다.

Customers 테이블에서 CompanyName을 조회하기 위한 컨트롤 바인딩

조회 바인딩을 설정하려면

  • 데이터 소스 창에서 주 Customers 노드를 선택하여 Form1CustomerIDLookupBox에 있는 콤보 상자로 끕니다.

    이렇게 하면 데이터 바인딩이 설정되어 Orders 테이블의 CustomerID 값을 유지하면서 Customers 테이블의 CompanyName을 표시합니다. 자세한 내용은 방법: Windows Forms 응용 프로그램에서 조회 테이블 만들기를 참조하십시오.

응용 프로그램 실행

응용 프로그램을 실행하려면

  • F5 키를 눌러 응용 프로그램을 실행합니다.

  • 레코드 일부를 탐색하고 CompanyName이 LookupBox 컨트롤에 나타나는지 확인합니다.

참고 항목

작업

방법: 데이터 소스 창에서 끌어 올 때 만들 컨트롤 설정

개념

데이터 응용 프로그램 개발의 새로운 기능

Visual Studio에서 데이터에 Windows Forms 컨트롤 바인딩

Visual Studio에서 데이터에 컨트롤 바인딩

기타 리소스

Visual Studio에서 데이터에 연결

데이터를 받기 위해 응용 프로그램 준비

데이터를 응용 프로그램으로 페치

응용 프로그램에서 데이터 편집

데이터 유효성 검사

데이터 저장

변경 기록

날짜

변경 내용

이유

2011년 5월

샘플 코드를 수정했습니다.

고객 의견