逐步解說:在 Windows 應用程式的表單之間傳遞資料
更新:2007 年 11 月
此逐步解說將提供逐步的指示,讓您瞭解如何將一個表單中的資料傳遞到另一個表單。使用一個 Northwind 表單中的客戶和訂單資料表將可讓使用者選取客戶,且第二個表單將會顯示所選客戶的訂單。此逐步解說將示範如何建立一個表單上的方法 (此方法可接收來自第一個表單的資料)。
注意事項: |
---|
此逐步解說僅示範在表單之間傳遞資料的一個方法。還有其他選擇可以將資料傳遞至表單,其中包括:建立第二個建構函式來接收資料,或建立公用屬性,並使用第一個表單的資料加以設定。 |
逐步解說將說明的工作包括:
建立新的 [Windows 應用程式] 專案。
利用資料來源組態精靈建立和設定資料集。
選取當從 [資料來源] 視窗拖曳項目時,要在表單上建立的控制項。如需詳細資訊,請參閱 HOW TO:設定從資料來源視窗拖曳時要建立的控制項。
從 [資料來源] 視窗將項目拖曳至表單上,即可建立資料繫結控制項。
建立含有資料格的第二個表單,以便顯示資料。
建立 TableAdapter 查詢,擷取特定客戶的訂單。
在表單之間傳遞資料。
必要條件
若要完成這個逐步解說,您必須要有:
- Northwind 範例資料庫的存取權。如需詳細資訊,請參閱 HOW TO:安裝範例資料庫。
建立 Windows 應用程式
若要建立新的 Windows 專案
從 [檔案] 功能表中,建立新專案。
將專案命名為 PassingDataBetweenForms。
選取 [Windows 應用程式],並按一下 [確定]。如需詳細資訊,請參閱建立 Windows 架構的應用程式。
隨即建立 PassingDataBetweenForms 專案,並將其加入至 [方案總管]。
建立資料來源
若要建立資料來源
在 [資料] 功能表上,請按一下 [顯示資料來源]。
在 [資料來源] 視窗中,選取 [加入新資料來源],啟動 [資料來源組態精靈]。
選取 [選擇資料來源類型] 頁面上的 [資料庫],再按一下 [下一步]。
在 [選擇資料連接] 頁上,執行下列其中一項:
如果下拉式清單中有提供 Northwind 範例資料庫的資料連接,請選取這個資料連接。
-或-
選取 [新增連接],啟動 [新增/修改連接] 對話方塊。如需詳細資訊,請參閱新增/修改連接對話方塊 (一般)。
如果資料庫需要密碼,且已啟用加入敏感性資料的選取,請選取此選項,然後按一下 [下一步]。
按一下 [將連接字串儲存到應用程式組態檔] 頁面上的 [下一步]。
在 [選擇您的資料庫物件] 頁面上,展開 [資料表] 節點。
選取 [Customers] 和 [Orders] 資料表,再按一下 [完成]。
[NorthwindDataSet] 會加入專案中,且 [Customers] 和 [Orders] 資料表會出現在 [資料來源] 視窗中。
建立第一個表單 (Form1)
您可以建立已繫結資料的資料格 (DataGridView 控制項),其方式是將 [Customers] 節點從 [資料來源] 視窗拖曳到表單上。
若要在表單上建立已繫結資料的資料格
從 [資料來源] 視窗,將主要 [Customers] 節點拖曳至 [Form1]。
DataGridView 以及用於巡覽資料錄的工具區域 (BindingNavigator) 會出現在 [Form1] 上。NorthwindDataSet、CustomersTableAdapter、BindingSource 和 BindingNavigator 則會出現在元件匣中。
建立第二個表單 (Form2)
若要建立第二個表單,將資料傳給它
選取 [專案] 功能表上的 [加入 Windows Form]。
保留預設名稱 [Form2],再按一下 [加入]。
從 [資料來源] 視窗,將主要 [Orders] 節點拖曳至 [Form2]。
DataGridView 以及用於巡覽資料錄的工具區域 (BindingNavigator) 會出現在 [Form2] 上。NorthwindDataSet、CustomersTableAdapter、BindingSource 和 BindingNavigator 則會出現在元件匣中。
從元件匣刪除 [OrdersBindingNavigator]。
[OrdersBindingNavigator] 會從 [Form2] 上消失。
將 TableAdapter 查詢加入至 Form2,載入 Form1 上選定客戶的訂單
若要建立 TableAdapter 查詢
按兩下 [方案總管] 中的 [NorthwindDataSet.xsd] 檔。
以滑鼠右鍵按一下 [OrdersTableAdapter],並選取 [加入查詢]。
保留預設選項 [使用 SQL 陳述式],再按一下 [下一步]。
保留預設選項 [傳回資料列的 SELECT],再按一下 [下一步]。
將 WHERE 子句加入至查詢,以根據 CustomerID 傳回 Orders。查詢應該如下所示:
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); }
在 Form1 上建立方法,傳遞資料並顯示 Form2
若要建立方法,將資料傳遞至 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]。
後續步驟
根據應用程式的需求而定,您在表單之間傳遞資料後可能還會想執行幾個步驟。您可以對這個逐步解說進行加強的部分包括:
編輯資料集,以加入或移除資料庫物件。如需詳細資訊,請參閱 HOW TO:編輯資料集。
加入將資料存回資料庫的功能。如需詳細資訊,請參閱 HOW TO:將資料集變更儲存至資料庫。