Share via


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

업데이트: 2011년 3월

이 연습에서는 한 폼에서 다른 한 폼으로 데이터를 전달하는 방법에 대해 단계별로 설명합니다. Northwind의 고객 테이블과 주문 테이블을 사용하는 경우 한 폼에서는 고객을 선택할 수 있고 다른 한 폼에서는 선택한 고객의 주문을 확인할 수 있습니다. 이 연습에서는 첫 번째 폼의 데이터를 받는 두 번째 폼에서 메서드를 만드는 방법을 보여 줍니다.

참고

이 연습에서는 폼 간에 데이터를 전달할 수 있는 방법을 하나만 보여 줍니다. 데이터를 폼으로 전달하는 다른 옵션으로는 두 번째 생성자를 만들어 데이터를 받는 방법 또는 첫 번째 폼의 데이터를 사용하여 설정할 수 있는 public 속성을 만드는 방법이 있습니다.

이 연습에서 수행할 작업은 다음과 같습니다.

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

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

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

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

  • 데이터를 표시할 수 있도록 표가 있는 두 번째 폼을 만듭니다.

  • 특정 고객에 대한 주문을 페치하는 TableAdapter 쿼리를 만듭니다.

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

사전 요구 사항

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

Windows 응용 프로그램 만들기

새 Windows 프로젝트를 만들려면

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

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

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

    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와 레코드 탐색에 사용되는 도구 스트립(BindingNavigator)이 Form2에 나타납니다. NorthwindDataSet, CustomersTableAdapter, BindingSourceBindingNavigator가 구성 요소 트레이에 나타납니다.

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

    Form2에서 OrdersBindingNavigator가 사라집니다.

TableAdapter 쿼리를 Form2에 추가하고 선택한 고객에 대한 주문을 Form1에 로드

TableAdapter 쿼리를 만들려면

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

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

  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. Form2_Load 메서드 뒤의 Form2에 다음 코드를 추가합니다.

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

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

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

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

  2. 속성 창에서 이벤트를 클릭합니다.

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

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

  4. 메서드 정의를 다음 샘플과 같이 업데이트합니다.

    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
    
    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();
    }
    

응용 프로그램 실행

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

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

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

다음 단계

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

참고 항목

개념

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

데이터 소스 개요

TableAdapter 개요

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

기타 리소스

데이터 연습

Visual Studio에서 데이터에 연결

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

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

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

데이터 유효성 검사

데이터 저장

변경 기록

날짜

변경 내용

이유

2011년 3월

예제 코드에서 오류를 제거했습니다.

고객 의견