다음을 통해 공유


연습: Windows Forms 간에 데이터 전달

 

게시 날짜: 2016년 4월

이 연습에서는 폼 간에 데이터를 전달하기 위한 단계별 지침을 제공합니다. Northwind 폼의 Customers 및 Orders 테이블을 사용하는 경우 한 폼에서 고객을 선택하면 선택한 고객의 주문이 두 번째 폼에 표시됩니다. 이 연습에서는 첫 번째 폼의 데이터를 받는 폼에서 메서드를 만드는 방법을 보여줍니다.

참고

이 연습에서는 폼 간에 데이터를 전달하는 방식 중 하나만을 보여줍니다. 폼에 데이터를 전달하는 다른 옵션도 있습니다. 예를 들어 데이터를 받는 두 번째 생성자를 만들거나 첫 번째 폼의 데이터를 사용하여 설정 가능한 공용 속성을 만드는 방식을 사용할 수도 있습니다.

이 연습에서 설명하는 작업은 다음과 같습니다.

  • Windows 응용 프로그램 프로젝트를 만듭니다.

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

  • 데이터 소스 창에서 항목을 끌어오는 경우 폼에 만들어질 컨트롤을 선택합니다. 자세한 내용은 데이터 소스 창에서 끌어올 때 만들 컨트롤 설정을 참조하십시오.

  • 데이터 소스 창에서 폼으로 항목을 끌어 데이터 바인딩된 컨트롤을 만듭니다.

  • 데이터를 표시하는 표가 포함된 두 번째 폼을 만듭니다.

  • 특정 고객의 주문을 가져오는 TableAdapter 쿼리를 만듭니다.

  • 폼 간에 데이터를 전달합니다.

사전 요구 사항

이 연습을 완료하려면 다음 사항이 필요합니다.

Windows 응용 프로그램 만들기

새 Windows 프로젝트를 만들려면

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

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

  3. Windows Forms 응용 프로그램을 선택하고 확인을 클릭합니다. 자세한 내용은 클라이언트 응용 프로그램을 참조하십시오.

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

데이터 소스 만들기

데이터 소스를 만들려면

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

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

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

  4. 데이터베이스 모델 선택 페이지에서 데이터 집합이 지정되어 있는지 확인하고 다음을 클릭합니다.

  5. 데이터 연결 선택 페이지에서 다음 중 한 가지를 수행합니다.

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

      또는

    • 새 연결을 선택하여 연결 추가/수정 대화 상자를 시작합니다.

  6. 데이터베이스에 암호가 필요하며 중요한 데이터를 포함하도록 옵션이 설정되어 있으면 해당 옵션을 선택하고 다음을 클릭합니다.

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

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

  9. CustomersOrders 테이블을 선택한 다음 마침을 클릭합니다.

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

첫 번째 폼(Form1) 만들기

데이터 소스 창에서 폼으로 Customers 노드를 끌어 데이터 바인딩된 표(DataGridView)를 만들 수 있습니다.

폼에서 데이터 바인딩된 표를 만들려면

두 번째 폼(Form2) 만들기

데이터를 전달할 두 번째 폼을 만들려면

  1. 프로젝트 메뉴에서 Windows Form 추가를 선택합니다.

  2. 기본 이름인 Form2를 그대로 두고 추가를 클릭합니다.

  3. Orders 노드를 데이터 소스 창에서 Form2로 끌어 옵니다.

    DataGridView와 레코드 탐색에 사용되는 도구 모음인 BindingNavigatorForm2에 나타납니다. NorthwindDataSet, CustomersTableAdapter, BindingSourceBindingNavigator가 구성 요소 트레이에 나타납니다.

  4. 구성 요소 트레이에서 OrdersBindingNavigator를 삭제합니다.

    OrdersBindingNavigatorForm2에서 사라집니다.

Form1에서 선택한 고객의 주문을 로드하도록 Form2에 TableAdapter 쿼리 추가

TableAdapter 쿼리를 만들려면

  1. 솔루션 탐색기에서 NorthwindDataSet.xsd 파일을 두 번 클릭합니다.

  2. OrdersTableAdapter를 마우스 오른쪽 단추로 클릭하고 쿼리 추가를 선택합니다.

  3. 기본 옵션인 SQL 문 사용을 그대로 두고 다음을 클릭합니다.

  4. 기본 옵션인 행을 반환하는 SELECT를 그대로 두고 다음을 클릭합니다.

  5. CustomerID를 기준으로 Orders를 반환하는 WHERE 절을 쿼리에 추가합니다. 이 쿼리는 다음과 같아야 합니다.

    SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry  
    FROM Orders   
    WHERE CustomerID = @CustomerID  
    

    참고

    데이터베이스에 대한 올바른 매개 변수 구문을 확인합니다. 예를 들어 Microsoft Access에서 WHERE 절은 다음과 같습니다. WHERE CustomerID = ?.

  6. 다음을 클릭합니다.

  7. DataTable 채우기 메서드 이름에는 FillByCustomerID를 입력합니다.

  8. DataTable 반환 옵션 선택을 취소하고 다음을 클릭합니다.

  9. 마침을 클릭합니다.

Form2에 데이터를 전달할 메서드 만들기

데이터를 전달할 메서드를 만들려면

  1. Form2를 마우스 오른쪽 단추로 클릭하고 코드 보기를 선택하여 코드 편집기에서 Form2를 엽니다.

  2. 다음 코드를 Form2Form2_Load 메서드 뒤에 추가합니다.

            internal void LoadOrders(String CustomerID)
            {
                ordersTableAdapter.FillByCustomerID(northwindDataSet.Orders, CustomerID);
            }
    
        Friend Sub LoadOrders(ByVal CustomerID As String)
            OrdersTableAdapter.FillByCustomerID(NorthwindDataSet.Orders, CustomerID)
        End Sub
    

Form1에서 데이터를 전달하고 Form2를 표시하는 메서드 만들기

Form2로 데이터를 전달할 메서드를 만들려면

  1. Form1에서 Customer 데이터 표를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.

  2. 속성 창에서 Events를 클릭합니다.

  3. CellDoubleClick 이벤트를 두 번 클릭합니다.

    코드 편집기가 나타납니다.

  4. 다음 샘플과 일치하도록 메서드 정의를 업데이트합니다.

            private void customersDataGridView_DoubleClick(object sender, EventArgs e)
            {
                System.Data.DataRowView SelectedRowView;
                NorthwindDataSet.CustomersRow SelectedRow;
    
                SelectedRowView = (System.Data.DataRowView)customersBindingSource.Current;
                SelectedRow = (NorthwindDataSet.CustomersRow)SelectedRowView.Row;
    
                Form2 OrdersForm = new Form2();
                OrdersForm.LoadOrders(SelectedRow.CustomerID);
                OrdersForm.Show();
            }
    
        Private Sub CustomersDataGridView_DoubleClick() Handles CustomersDataGridView.DoubleClick
    
            Dim SelectedRowView As Data.DataRowView
            Dim SelectedRow As NorthwindDataSet.CustomersRow
    
            SelectedRowView = CType(CustomersBindingSource.Current, System.Data.DataRowView)
            SelectedRow = CType(SelectedRowView.Row, NorthwindDataSet.CustomersRow)
    
            Dim OrdersForm As New Form2
            OrdersForm.LoadOrders(SelectedRow.CustomerID)
            OrdersForm.Show()
        End Sub
    

응용 프로그램 실행

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

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

  • Form1에서 고객 레코드를 두 번 클릭하여 해당 고객의 주문이 포함된 Form2를 엽니다.

다음 단계

응용 프로그램 요구 사항에 따라 폼 간에 데이터를 전달한 후 몇 단계를 더 수행해야 할 수도 있습니다. 이 연습에서 보완할 수 있는 사항은 다음과 같습니다.

참고 항목

데이터 연습
Visual Studio에서 데이터에 Windows Forms 컨트롤 바인딩
데이터 소스 개요
TableAdapter 개요
Visual Studio에서 데이터에 연결
데이터를 받기 위해 응용 프로그램 준비
데이터를 응용 프로그램으로 페치
Visual Studio에서 데이터에 컨트롤 바인딩
응용 프로그램에서 데이터 편집
데이터 유효성 검사
데이터 저장