共用方式為


逐步解說:在 Windows Form 之間傳遞資料

更新:2011 年 3 月

此逐步解說將提供逐步的指示,讓您瞭解如何將一個表單中的資料傳遞到另一個表單。 使用一個 Northwind 表單中的客戶和訂單資料表將可讓使用者選取客戶,且第二個表單將會顯示所選客戶的訂單。 此逐步解說將示範如何建立一個表單上的方法 (此方法可接收來自第一個表單的資料)。

注意事項注意事項

此逐步解說僅示範在表單之間傳遞資料的一個方法。 還有其他選擇可以將資料傳遞至表單,其中包括:建立第二個建構函式來接收資料,或建立公用屬性,並使用第一個表單的資料加以設定。

逐步解說將說明的工作包括:

  • 建立新的 [Windows 應用程式] 專案。

  • 利用資料來源組態精靈建立和設定資料集。

  • 選取當從 [資料來源] 視窗拖曳項目時,要在表單上建立的控制項。 如需詳細資訊,請參閱 HOW TO:設定從資料來源視窗拖曳時要建立的控制項

  • 從 [資料來源] 視窗將項目拖曳至表單上,即可建立資料繫結控制項。

  • 建立含有資料格的第二個表單,以便顯示資料。

  • 建立 TableAdapter 查詢,擷取特定客戶的訂單。

  • 在表單之間傳遞資料。

必要條件

若要完成這個逐步解說,您需要:

建立 Windows 應用程式

若要建立新的 Windows 專案

  1. 從 [檔案] 功能表中,建立新專案。

  2. 將專案命名為 PassingDataBetweenForms。

  3. 選取 [Windows Form 應用程式],然後按一下 [確定]。 如需詳細資訊,請參閱建立 Windows 架構的應用程式

    隨即建立 PassingDataBetweenForms 專案,並將其加入至 [方案總管]。

建立資料來源

若要建立資料來源

  1. 按一下 [資料] 功能表上的 [顯示資料來源]。

  2. 在 [資料來源] 視窗中,選取 [加入新資料來源],以啟動 [資料來源組態精靈]。

  3. 請選取 [選擇資料來源類型] 頁面上的 [資料庫],再按 [下一步]。

  4. 在 [選擇資料庫模型] 頁面上,確認已指定 [資料集],再按 [下一步]。

  5. 在 [選擇資料連接] 頁上,執行下列其中一項:

    • 如果下拉式清單中有提供 Northwind 範例資料庫的資料連接,請選取這個資料連接。

      -或-

    • 選取 [新增連接],啟動 [新增/修改連接] 對話方塊。 如需詳細資訊,請參閱新增/修改連接對話方塊 (一般)

  6. 如果資料庫需要密碼,且已啟用加入敏感性資料的選取,請選取此選項,然後按一下 [下一步]。

  7. 按一下 [將連接字串儲存到應用程式組態檔] 頁面上的 [下一步]。

  8. 在 [選擇您的資料庫物件] 頁面上,展開 [資料表] 節點。

  9. 選取 [Customers] 和 [Orders] 資料表,再按一下 [完成]。

    [NorthwindDataSet] 會加入專案中,且 [Customers] 和 [Orders] 資料表會出現在 [資料來源] 視窗中。

建立第一個表單 (Form1)

您可以建立已繫結資料的資料格 (DataGridView 控制項),其方式是將 [Customers] 節點從 [資料來源] 視窗拖曳到表單上。

若要在表單上建立已繫結資料的資料格

建立第二個表單 (Form2)

若要建立第二個表單,將資料傳給它

  1. 選取 [專案] 功能表上的 [加入 Windows Form]。

  2. 保留預設名稱 [Form2],再按一下 [加入]。

  3. 從 [資料來源] 視窗,將主要 [Orders] 節點拖曳至 [Form2]。

    DataGridView 以及用於巡覽資料錄的工具區域 (BindingNavigator) 會出現在 [Form2] 上。 NorthwindDataSetCustomersTableAdapterBindingSourceBindingNavigator 則會出現在元件匣中。

  4. 從元件匣刪除 [OrdersBindingNavigator]。

    [OrdersBindingNavigator] 會從 [Form2] 上消失。

將 TableAdapter 查詢加入至 Form2,載入 Form1 上選定客戶的訂單

若要建立 TableAdapter 查詢

  1. 按兩下 [方案總管] 中的 [NorthwindDataSet.xsd] 檔。

  2. 以滑鼠右鍵按一下 [OrdersTableAdapter],並選取 [加入查詢]。

  3. 保留預設選項 [使用 SQL 陳述式],再按一下 [下一步]。

  4. 保留預設選項 [傳回資料列的 SELECT],再按一下 [下一步]。

  5. 將 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 = ?。

  6. 按一下 [下一步]。

  7. 在 [填入 DataTable] 的 [方法名稱] 中,輸入 FillByCustomerID。

  8. 清除 [傳回 DataTable] 選項,再按一下 [下一步]。

  9. 按一下 [完成]。

在 Form2 上建立方法,將資料傳給它

若要建立方法,將資料傳給它

  1. 以滑鼠右鍵按一下 [Form2],並選取 [檢視程式碼],即可在 [程式碼編輯器] 中開啟 [Form2]。

  2. 將下列程式碼加入至 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

  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]。

後續步驟

根據應用程式的需求而定,您在表單之間傳遞資料後可能還會想執行幾個步驟。 您可以對這個逐步解說進行加強的部分包括:

請參閱

概念

將 Windows Form 控制項繫結至 Visual Studio 中的資料

資料來源概觀

TableAdapter 概觀

將控制項繫結至 Visual Studio 中的資料

其他資源

資料逐步解說

連接至 Visual Studio 中的資料

準備您的應用程式以接收資料

將資料擷取至您的應用程式中

在您的應用程式中編輯資料

驗證資料

儲存資料

變更記錄

日期

記錄

原因

2011 年 3 月

排除範例程式碼的錯誤。

客戶回函。