共用方式為


建立支援查閱資料繫結的 .NET Framework Windows Forms 使用者控制項

注意

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

在 Windows Forms 上顯示資料時,您可以從 [工具箱] 中選擇現有控制項;或者,如果應用程式需要標準控制項中未提供的功能,您也可以撰寫自訂控制項。 這個逐步解說顯示如何建立可實作 LookupBindingPropertiesAttribute 的控制項。 可實作 LookupBindingPropertiesAttribute 的控制項可以包含三個可繫結至資料的屬性。 這類控制項類似 ComboBox

如需控制項製作的詳細資訊,請參閱開發 Windows Form 控制項在設計階段

製作控制項以用於資料繫結情節時,您需要實作下列其中一個資料繫結屬性:

資料繫結屬性使用方式
對顯示資料之單一資料行 (或屬性) 的簡單控制項 (如 DefaultBindingPropertyAttribute),實作 TextBox 如需詳細資訊,請參閱建立支援簡單資料繫結的 Windows Forms 使用者控制項 (部分機器翻譯)。
對顯示資料之清單 (或資料表) 的控制項 (如 ComplexBindingPropertiesAttribute),實作 DataGridView 如需詳細資訊,請參閱建立支援複雜資料繫結的 Windows Forms 使用者控制項
對顯示資料之清單 (或資料表) 但也需要呈現單一資料行或屬性的控制項 (如 LookupBindingPropertiesAttribute),實作 ComboBox。 (這個逐步解說頁面會描述此流程)。

這個逐步解說會建立繫結至兩張資料表中資料的查閱控制項。 此範例使用 Northwind 範例資料庫的 CustomersOrders 資料表。 查閱控制項將會繫結至 Orders 資料表中的 CustomerID 欄位。 其將會使用此值查閱 Customers 資料表中的 CompanyName

在這個逐步解說過程中,您將學習如何:

  • 建立新的 Windows Forms 應用程式 (.NET Framework)

  • 將新的 [使用者控制項] 新增至您的專案。

  • 透過視覺化方式設計使用者控制項。

  • 實作 LookupBindingProperty 屬性。

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

  • 在 [資料來源] 視窗的 [訂單] 資料表上設定 [CustomerID] 資料行,以使用新的控制項。

  • 建立表單以顯示新控制項中的資料。

必要條件

若要完成本教學課程,您需要在 Visual Studio 中安裝 .NET 桌面開發資料儲存和處理工作負載。 若要安裝,請開啟 Visual Studio 安裝程式並選擇您要修改 Visual Studio 版本旁的 [修正] (或 [其他]>[修改])。 請參閱修改 Visual Studio

本逐步解說會使用 SQL Server Express LocalDB 和 Northwind 範例資料庫。

  1. 如果您沒有 SQL Server Express LocalDB,請從 SQL Server Express 下載頁面或透過 Visual Studio 安裝程式進行安裝。 在 Visual Studio 安裝程式中,您可以將 SQL Server Express LocalDB 安裝為資料儲存和處理工作負載的一部分,或安裝為個別元件。

  2. 請遵循下列步驟安裝 Northwind 範例資料庫:

    1. 在 Visual Studio 中,開啟 [SQL Server 物件總管]視窗。 (SQL Server 物件總管會安裝為 Visual Studio 安裝程式中資料儲存和處理工作負載的一部分。)展開 [SQL Server]節點。 以滑鼠右鍵按一下您的 LocalDB 執行個體,然後選取 [新增查詢]

      查詢編輯器視窗會隨即開啟。

    2. Northwind Transact-SQL 指令碼複製到剪貼簿。 此 T-SQL 指令碼會從頭開始建立 Northwind 資料庫,並將資料填入其中。

    3. 將 T-SQL 指令碼貼入查詢編輯器中,然後選擇 [執行] 按鈕。

      查詢很快就會完成執行,並建立 Northwind 資料庫。

建立 Windows Forms 應用程式專案

第一步是建立 Windows Forms 應用程式 (.NET Framework) 專案。

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

  2. 在左側窗格中展開 Visual C#Visual Basic,然後選取 [Windows 桌面]

  3. 在中間窗格中,選取 [Windows Forms 應用程式] 專案類型。

  4. 將專案命名為 LookupControlWalkthrough,然後選擇 [確定]

    隨即建立 LookupControlWalkthrough 專案,並將其新增至 [方案總管]

將使用者控制項新增至專案

此逐步解說會從 [使用者控制項] 建立查閱控制項,進而將 [使用者控制項] 項目新增至 LookupControlWalkthrough 專案。

  1. 從 [專案] 功能表選取 [新增使用者控制項]

  2. 在 [名稱] 區域中輸入 LookupBox,然後按一下 [新增]

    [LookupBox] 控制項會新增至 [方案總管],並在設計工具中開啟。

設計 LookupBox 控制項

若要設計 LookupBox 控制項,請將 ComboBox 從 [工具箱] 拖曳至使用者控制項的設計介面。

新增必要的資料繫結屬性

針對支援資料繫結的查閱控制項,您可以實作 LookupBindingPropertiesAttribute

  1. 將 [LookupBox] 控制項切換至程式碼檢視。 (在 [檢視] 功能表上,選擇 [程式碼]。)

  2. LookupBox 中的程式碼取代為下列內容:

    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")]
        public partial class LookupBox : UserControl
        {
            public object DataSource
            {
                get{ return comboBox1.DataSource; }
                set{ comboBox1.DataSource = value; }
            }
    
            public string DisplayMember
            {
                get{ return comboBox1.DisplayMember; }
                set{ comboBox1.DisplayMember = value; }
            }
    
            public string ValueMember
            {
                get{ return comboBox1.ValueMember; }
                set{ comboBox1.ValueMember = value; }
            }
    
            public string LookupMember
            {
                get{ return comboBox1.SelectedValue.ToString(); }
                set{ comboBox1.SelectedValue = value; }
            }
    
    
            public LookupBox()
            {
                InitializeComponent();
            }
        }
    }
    
  3. 從 [ 建置 ] 功能表中,選擇 [ 建置方案]。

從您的資料庫建立資料來源

此步驟使用 [資料來源組態精靈],根據 Northwind 範例資料庫中的 CustomersOrders 資料表建立資料來源。

  1. 若要開啟 [資料來源] 視窗,請按一下 [資料] 功能表上的 [顯示資料來源]

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

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

  4. 在 [選擇您的資料連線] 頁面上,執行下列其中一項:

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

    • 選取 [新增連線] 啟動 [新增/修改連線] 對話方塊。

  5. 如果資料庫需要密碼,請選取選項來加入敏感性資料,然後按一下 [下一步]

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

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

  8. 選取 CustomersOrders 資料表,然後按一下 [完成]

    NorthwindDataSet 會新增至您的專案,且 CustomersOrders 資料表會出現在 [資料來源] 視窗中。

將 Orders 資料表的 CustomerID 資料行設定為使用 LookupBox 控制項

在 [資料來源] 視窗中,您可以設定在將項目拖曳至表單之前建立控制項。

  1. 在設計工具中,開啟 Form1

  2. 在 [資料來源] 視窗中,展開 [客戶] 節點。

  3. 展開 [訂單] 節點 (位於 [客戶] 節點的 [傳真] 資料行下方)。

  4. 按一下 [訂單] 節點上的下拉式清單箭頭,並從控制項清單中選擇 [詳細資料]

  5. 按一下 [CustomerID] 資料行 (位於 [訂單] 節點中) 上的下拉式清單箭頭,並選擇 [自訂]

  6. 在 [資料 UI 自訂選項] 對話方塊中,從 [相關聯的控制項] 清單中選取 LookupBox

  7. 按一下 [確定]

  8. 按一下 [CustomerID] 資料行上的下拉式清單箭頭,並選擇 [LookupBox]

控制項加入至表單

將項目從 [資料來源] 視窗拖曳至 Form1,以建立資料繫結控制項。

若要在 Windows Form 上建立資料繫結控制項,請將 [Orders] 節點從 [資料來源] 視窗拖曳至 Windows Form,並確認使用 LookupBox 控制項來顯示 CustomerID 資料行中的資料。

繫結控制項以查閱 Customers 資料表中的 CompanyName

若要設定查閱繫結,在 [資料來源] 視窗中選取 [客戶] 節點,並將其拖曳至 [Form1] 的 [CustomerIDLookupBox] 中的下拉式方塊。

這會設定資料繫結以顯示 Customers 資料表中的 CompanyName,同時維護 Orders 資料表中的 CustomerID 值。

執行應用程式

  • F5 執行應用程式。

  • 巡覽部分記錄,並確認 CompanyName 出現在 LookupBox 控制項中。