共用方式為


在表單之間傳遞數據

備註

類別 DataSet 和相關類別是 2000 年代初的舊版 .NET Framework 技術,可讓應用程式在應用程式與資料庫中斷連線時使用記憶體中的數據。 這些技術特別適用於可讓使用者修改數據並將變更保存回資料庫的應用程式。 雖然數據集是經過證實的成功技術,但新 .NET 應用程式的建議方法是使用 Entity Framework Core。 Entity Framework 提供更自然的方式,以表格式數據作為物件模型使用,而且具有更簡單的程序設計介面。

本教學課程提供將資料從一個表單傳送至另一個表單的逐步說明。 藉由使用 Northwind 範例資料庫中的 Customers 和 Orders 數據表,一個窗體可讓使用者選取客戶,而第二個窗體會顯示選取的客戶訂單。 本教學課程示範如何在第二個窗體上建立方法,以接收第一個窗體的數據。

在本教學課程中,您會完成下列工作:

  • 建立新的 Windows Forms 應用程式 (.NET Framework) 專案。
  • 使用 [數據源組態精靈] 建立及設定數據集。
  • 拖曳項目從數據源視窗至窗體時,選擇要建立的控制項。 如需詳細資訊,請參閱 從 [數據源] 視窗拖曳時設定要建立的控件
  • 數據源 視窗拖曳項目到表單上,以建立資料綁定控制項。
  • 使用顯示數據的方格建立第二個窗體。
  • 建立 TableAdapter 查詢以擷取特定客戶的訂單。
  • 在表單之間傳遞數據。

備註

本教學課程僅示範在窗體之間傳遞數據的一種方式。 還有其他選項可將數據傳遞至窗體,例如建立第二個建構函式來接收數據,或建立可使用第一個窗體數據設定的公用屬性。

先決條件

  • 安裝在 Visual Studio 中的 .NET 桌面開發和資料儲存和處理工作負載。 若要安裝它們,請開啟 Visual Studio 安裝程式 ,然後選擇您想要使用的 Visual Studio 版本旁的 [修改] 或 [ 更多>修改]。 如需詳細資訊,請參閱 修改Visual Studio

  • SQL Server 下載頁面,或透過 Visual Studio 安裝程式 安裝 SQL Server Express 2019 LocalDB,作為 數據儲存和處理 工作負載的一部分。

  • 透過下列步驟建立的 Northwind 範例資料庫:

    1. 在 Visual Studio 中,從 [檢視] 功能表選取 [SQL Server 物件總管] 視窗,以開啟 SQL Server 物件總管視窗。 SQL Server 物件瀏覽器會安裝為 數據儲存和處理 工作負載的一部分。

    2. 展開 [SQL Server ] 節點,以滑鼠右鍵按兩下您的 LocalDB 實例,然後選取 [ 新增查詢 ] 以開啟查詢編輯器視窗。

    3. Northwind Transact-SQL 腳本 複製到剪貼簿。 此 T-SQL 腳本會建立 Northwind 資料庫,並填入數據。

    4. 將 T-SQL 腳本貼到查詢編輯器中,然後選取視窗頂端的 [ 執行 ] 以建立 Northwind 資料庫。

建立 Windows Forms 應用程式專案

  1. 在 Visual Studio 的 [ 檔案 ] 功能表上,選取 [ 新增>專案]。

  2. 從 [所有語言] 下拉式清單、[所有平臺] 下拉式清單中選取 [C#] 或 [Visual Basic],然後從 [所有項目類型] 列表中選取 [桌面]。

  3. 從專案範本清單中選取 [Windows Forms 應用程式][.NET Framework] ,然後選取 [ 下一步]。

  4. 將專案命名為 PassingDataBetweenForms,選取 [ 下一步],然後選取 [ 建立]。

PassingDataBetweenForms 專案已建立並新增至 方案總管Form1 的設計工具檢視會出現在編輯器中。

建立資料來源

  1. 選取 Visual Studio 功能表上的 [專案>],以開啟 [數據源] 視窗。

  2. 在 [ 數據源] 視窗中,選取 [ 新增數據源 ] 以啟動 [數據源組態 精靈]。

  3. 在 [ 選擇數據源類型 ] 頁面上,選取 [ 資料庫],然後選取 [ 下一步]。

  4. 在 [ 選擇資料庫模型] 頁面上,確認已指定 數據集 ,然後選取 [ 下一步]。

  5. 在 [ 選擇您的數據連線 ] 頁面上,如果 Northwind 範例資料庫的數據連線已可用,請選取它,然後繼續進行 [選擇您的資料庫物件 ] 步驟。 否則,請選取 [新增連線]。

  6. 在 [ 選擇數據源] 畫面上,選取 [Microsoft SQL Server 資料庫檔案],然後選取 [ 繼續]。

  7. 在 [ 新增連線] 畫面上,選取 [ 流覽],流覽至並選取 northwnd.mdf 檔案,然後選取 [ 開啟]。

  8. 選取 [Windows 驗證],或選取 [ SQL Server 驗證 ],並提供使用者名稱和密碼來存取資料庫。

  9. 選取 [測試連線] 以測試連線。 線上成功時,請選取 [ 確定]。

  10. 在 [ 選擇您的數據連線 ] 頁面上,確認資料庫檔案出現,然後選取 [ 下一步]。

  11. 選取 [ ] 快顯問題 您要將檔案複製到專案並修改連線嗎?

  12. 在 [ 將連接字串儲存至應用程式組態檔 ] 頁面上,選取 [ ]。 將聯機命名為 NorthwindConnectionString,然後選取 [ 下一步]。

  13. 在 [ 選擇您的資料庫物件] 頁面上,展開 [ 數據表 ] 節點,選取 [ 客戶 ] 和 [ 訂單 ] 數據表,將數據集命名為 NorthwindDataSet,然後選取 [ 完成]。

NorthwindDataSet 會新增至您的專案,而且 CustomersOrders 數據表會出現在 [數據源] 視窗中。

填入第一個表單

建立第二個表單

建立一個用於傳遞數據的第二個表單。

  1. [專案] 功能表中,選擇 [新增表單] [Windows Forms]。

  2. 保留 Form2 的預設名稱,然後選取 [ 新增]。

  3. 將主要 Orders 節點從 [數據源] 視窗拖曳至 Form2

    DataGridViewBindingNavigator的工具列用於巡覽記錄,顯示在Form2上。 NorthwindDataSetCustomersTableAdapterBindingSourceBindingNavigator 會出現在元件匣中。

  4. 從元件匣中刪除 OrdersBindingNavigatorBindingNavigator 會從 Form2 消失。

新增 TableAdapter 查詢

在 Form2 中新增一個 TableAdapter 查詢語句,以載入 Form1 上選定客戶的訂單。

  1. 方案總管器中雙擊NorthwindDataSet.xsd檔案。

  2. 以滑鼠右鍵點擊 Orders 資料表中的 OrdersTableAdapter,然後選取 [新增>查詢]。

  3. 保留 [使用 SQL 語句 ] 的預設選項,然後選取 [ 下一步]。

  4. 保留 SELECT 的預設選項 以傳回數據列 ,然後選取 [ 下一步]。

  5. 要讓資料表載入哪些資料時,要根據 Orders 回傳 CustomerID,請在查詢的結尾新增一個WHERE子句。 最終查詢看起來應該類似下列程式代碼:

    SELECT OrderID, CustomerID, 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] 選項,然後選取 [完成]。

在 Form2 上建立方法以將數據傳遞至

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

  2. Form2 程式代碼中,移除 方法的內容 Form2_Load ,並在 方法之後 Form2_Load 新增下列程式代碼:

internal void LoadOrders(String CustomerID)
{
    ordersTableAdapter.FillByCustomerID(northwindDataSet.Orders, CustomerID);
}

在 Form1 上建立方法來傳遞數據並顯示 Form2

  1. Form1 的設計工具檢視中,以滑鼠右鍵按兩下 [客戶] 資料格,然後選取 [ 屬性]。

  2. 在 [ 屬性] 視窗中,選取頂端工具列中的 [事件 ] 圖示。

  3. 按兩下 DoubleClick 事件以開啟程式代碼編輯器。

  4. 在程式代碼編輯器中,更新方法定義以符合下列範例:

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

執行及測試應用程式

  1. F5 以執行應用程式。

  2. 在應用程式中,按兩下 Form1 中的客戶記錄,來開啟 Form2,顯示該客戶的訂單。

後續步驟

視應用程式需求而定,您可以在表單之間傳遞數據之後執行數個步驟。 您可以對本教學課程進行一些增強功能,包括: