逐步解說:在 Windows Form 之間傳遞資料
此逐步解說提供將資料從某個表單傳遞至另一個表單的指示。 使用某個 Northwind 表單的 Customers 和 Orders 資料表讓使用者選取客戶,而第二個表單則會顯示所選取之客戶的訂單。 此逐步解說示範如何在要從第一個表單接收資料的表單上建立方法。
注意事項 |
---|
此逐步解說只示範一種在表單之間傳遞資料的方法。還有其他將資料傳遞至表單的選項,包含這些方法:建立第二個建構函式以接收資料,或是建立可以使用第一個表單的資料設定的公用屬性。 |
此逐步解說中所述的工作包括:
建立新的 Windows 應用程式專案。
使用資料來源組態精靈建立和設定資料集。
選取從 [資料來源] 視窗拖曳項目時要在表單上建立的控制項。 如需詳細資訊,請參閱如何:設定從資料來源視窗拖曳時要建立的控制項。
從 [資料來源] 視窗將項目拖曳至表單,以建立資料繫結控制項。
使用資料格建立第二個表單以顯示資料。
建立 TableAdapter 查詢以擷取特定客戶的訂單。
在表單之間傳遞資料。
必要條件
為了完成此逐步解說,您需要:
- Northwind 範例資料庫的存取權。 如需詳細資訊,請參閱如何:安裝範例資料庫。
建立 Windows 應用程式
建立新的 Windows 專案
從 [檔案] 功能表中,建立新專案。
將專案命名為 PassingDataBetweenForms。
選取 [Windows Form 應用程式],然後按一下 [確定]。 如需詳細資訊,請參閱使用 .NET Framework 開發用戶端應用程式。
隨即建立 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。
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 方法之後的 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); }
在 Form1 上建立方法以傳遞資料並顯示 Form2
建立方法以將資料傳遞給 Form2
在 Form1 中,在 Customer 資料格上按一下滑鼠右鍵,然後按一下 [屬性]。
在 [屬性] 視窗中按一下 [事件]。
按兩下 [CellDoubleClick] 事件。
程式碼編輯器隨即開啟。
更新方法定義以符合下列範例:
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。
後續步驟
視應用程式的需求而定,在表單之間傳遞資料之後,您可能會有幾個想要執行的步驟。 一些您可以加強這個逐步解說的部分包括:
編輯資料集,以加入或移除資料庫物件。 如需詳細資訊,請參閱如何:編輯資料集。
加入將資料存回資料庫的功能。 如需詳細資訊,請參閱如何:將資料集變更儲存至資料庫。
請參閱
概念
將 Windows Form 控制項繫結至 Visual Studio 中的資料