연습: Windows 응용 프로그램에서 폼 간에 데이터 전달
업데이트: 2007년 11월
이 연습에서는 한 폼에서 다른 한 폼으로 데이터를 전달하는 방법에 대해 단계별로 설명합니다. Northwind의 고객 테이블과 주문 테이블을 사용하는 경우 한 폼에서는 고객을 선택할 수 있고 다른 한 폼에서는 선택한 고객의 주문을 확인할 수 있습니다. 이 연습에서는 첫 번째 폼의 데이터를 받는 두 번째 폼에서 메서드를 만드는 방법을 보여 줍니다.
참고: |
---|
이 연습에서는 폼 간에 데이터를 전달할 수 있는 방법을 하나만 보여 줍니다. 데이터를 폼으로 전달하는 다른 옵션으로는 두 번째 생성자를 만들어 데이터를 받는 방법 또는 첫 번째 폼의 데이터를 사용하여 설정할 수 있는 public 속성을 만드는 방법이 있습니다. |
이 연습에서 수행할 작업은 다음과 같습니다.
새 Windows 응용 프로그램 프로젝트를 만듭니다.
데이터 소스 구성 마법사를 사용하여 데이터 집합을 만들고 구성합니다.
데이터 소스 창에서 항목을 끌어 올 때 폼에 만들 컨트롤을 선택합니다. 자세한 내용은 방법: 데이터 소스 창에서 끌어 올 때 만들 컨트롤 설정을 참조하십시오.
데이터 소스 창에서 폼으로 항목을 끌어 와 데이터 바인딩된 컨트롤을 만듭니다.
데이터를 표시할 수 있도록 표가 있는 두 번째 폼을 만듭니다.
특정 고객에 대한 주문을 페치하는 TableAdapter 쿼리를 만듭니다.
폼 간에 데이터를 전달합니다.
사전 요구 사항
이 연습을 완료하려면 다음과 같은 요건을 갖추어야 합니다.
- Northwind 샘플 데이터베이스에 대한 액세스. 자세한 내용은 방법: 샘플 데이터베이스 설치를 참조하십시오.
Windows 응용 프로그램 만들기
새 Windows 프로젝트를 만들려면
파일 메뉴에서 새 프로젝트를 만듭니다.
프로젝트 이름을 PassingDataBetweenForms로 지정합니다.
Windows 응용 프로그램을 선택하고 확인을 클릭합니다. 자세한 내용은 Windows 기반 응용 프로그램 만들기를 참조하십시오.
PassingDataBetweenForms 프로젝트가 만들어져 솔루션 탐색기에 추가됩니다.
데이터 소스 만들기
데이터 소스를 만들려면
데이터 메뉴에서 데이터 소스 표시를 클릭합니다.
데이터 소스 창에서 새 데이터 소스 추가를 선택하여 데이터 소스 구성 마법사를 시작합니다.
데이터 소스 형식 선택 페이지에서 데이터베이스를 선택하고 다음을 클릭합니다.
데이터 연결 선택 페이지에서 다음 중 한 가지를 수행합니다.
Northwind 샘플 데이터베이스에 대한 데이터 연결이 드롭다운 목록에 표시되면 해당 연결을 선택합니다.
- 또는 -
새 연결을 선택하여 연결 추가/수정 대화 상자를 시작합니다. 자세한 내용은 연결 추가/수정 대화 상자(일반)를 참조하십시오.
데이터베이스에 암호가 필요하고 중요한 데이터를 포함할 수 있는 옵션을 사용할 수 있으면 이 옵션을 선택하고 다음을 클릭합니다.
응용 프로그램 구성 파일에 연결 문자열 저장 페이지에서 다음을 클릭합니다.
데이터베이스 개체 선택 페이지에서 테이블 노드를 확장합니다.
Customers 및 Orders 테이블을 선택한 다음 마침을 클릭합니다.
NorthwindDataSet이 프로젝트에 추가되고 Customers 및 Orders 테이블이 데이터 소스 창에 나타납니다.
첫 번째 폼(Form1) 만들기
Customers 노드를 데이터 소스 창에서 폼으로 끌어 와 데이터 바인딩된 모눈(DataGridView 컨트롤)을 만들 수 있습니다.
폼에 데이터 바인딩된 모눈을 만들려면
주 Customers 노드를 데이터 소스 창에서 Form1으로 끌어서 놓습니다.
DataGridView와 레코드 탐색에 사용되는 도구 스트립(BindingNavigator)이 Form1에 나타납니다. NorthwindDataSet, CustomersTableAdapter, BindingSource 및 BindingNavigator가 구성 요소 트레이에 나타납니다.
두 번째 폼(Form2) 만들기
데이터를 전달할 두 번째 폼을 만들려면
프로젝트 메뉴에서 Windows Form 추가를 선택합니다.
기본 이름 Form2를 그대로 두고 추가를 클릭합니다.
주 Orders 노드를 데이터 소스 창에서 Form2로 끌어서 놓습니다.
DataGridView와 레코드 탐색에 사용되는 도구 스트립(BindingNavigator)이 Form2에 나타납니다. NorthwindDataSet, CustomersTableAdapter, BindingSource 및 BindingNavigator가 구성 요소 트레이에 나타납니다.
구성 요소 트레이에서 OrdersBindingNavigator를 삭제합니다.
Form2에서 OrdersBindingNavigator가 사라집니다.
TableAdapter 쿼리를 Form2에 추가하고 선택한 고객에 대한 주문을 Form1에 로드
TableAdapter 쿼리를 만들려면
솔루션 탐색기에서 NorthwindDataSet.xsd 파일을 두 번 클릭합니다.
OrdersTableAdapter를 마우스 오른쪽 단추로 클릭하고 Query 추가를 선택합니다.
SQL 문 사용의 기본 옵션을 그대로 두고 다음을 클릭합니다.
행을 반환하는 SELECT의 기본 옵션을 그대로 두고 다음을 클릭합니다.
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 = ?의 형태여야 합니다.
다음을 클릭합니다.
DataTable 채우기메서드 이름에 대해 FillByCustomerID를 입력합니다.
DataTable 반환 옵션의 선택을 취소하고 다음을 클릭합니다.
마침을 클릭합니다.
데이터를 전달하는 메서드를 Form2에 만들기
데이터를 전달하는 메서드를 만들려면
Form2를 마우스 오른쪽 단추로 클릭하고 코드 보기를 선택하여 코드 편집기에서 Form2를 엽니다.
폼에 자동으로 추가된 Form2_Load 메서드를 다음 코드로 바꿉니다.
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로 전달하는 메서드를 만들려면
Form1을 마우스 오른쪽 단추로 클릭하고 코드 보기를 선택하여 코드 편집기에서 Form1을 엽니다.
Form1_Load 메서드 아래의 Form1에 다음 코드를 추가합니다.
Private Sub CustomersDataGridView_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) _ 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를 엽니다.
다음 단계
응용 프로그램 요구 사항에 따라 폼 간에 데이터를 전달한 후 몇 가지 단계를 수행해야 할 수 있습니다. 이 연습에서 보완할 수 있는 사항은 다음과 같습니다.
데이터 집합을 편집하여 데이터베이스 개체를 추가하거나 제거합니다. 자세한 내용은 방법: 데이터 집합 편집을 참조하십시오.
데이터를 다시 데이터베이스에 저장하는 기능을 추가합니다. 자세한 내용은 방법: 데이터베이스에 데이터 집합 변경 내용 저장을 참조하십시오.