共用方式為


建立支援查閱數據系結的 .NET Framework Windows Forms 使用者控件

備註

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

在 Windows Forms 上顯示資料時,您可以從 [工具箱] 中選擇現有的控制件,或者如果您的應用程式需要標準控件中無法使用的功能,也可以撰寫自定義控件。 本逐步解說示範如何建立實作LookupBindingPropertiesAttribute的控制項。 實作的 LookupBindingPropertiesAttribute 控件可以包含三個可以系結至數據的屬性。 這類控制件類似於 ComboBox

如需控件撰寫的詳細資訊,請參閱 在設計時間開發 Windows Forms 控制件

撰寫控件以用於數據系結案例時,您需要實作下列其中一個數據系結屬性:

數據系結屬性使用方式
DefaultBindingPropertyAttribute 實作在簡單控件上,例如 TextBox,用以顯示一列(或一個屬性)數據。 如需詳細資訊,請參閱 建立支援簡單數據系結的 Windows Forms 使用者控件
在控制項上實施 ComplexBindingPropertiesAttribute,如同 DataGridView,用於顯示數據清單(或數據表)。 如需詳細資訊,請參閱 建立支援複雜數據系結的 Windows Forms 使用者控件
在控件上實作LookupBindingPropertiesAttribute,例如ComboBox,可顯示數據的清單(或數據表),但同時也需要呈現單一數據欄或屬性。 (本逐步解說頁面描述此過程。)

本逐步解說會建立一個繫結至兩個資料表數據的查詢控制項。 此範例會使用 Northwind 範例資料庫中的 CustomersOrders 資料表。 查閱控件系結至 CustomerID 數據表中的 Orders 欄位。 它會使用此值從CompanyName表中查閱Customers

在本逐步解說中,您將瞭解如何:

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

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

  • 以可視化方式設計使用者控制件。

  • 實作 LookupBindingProperty 屬性。

  • 使用 [數據源組態 精靈] 建立數據集。

  • 在 [資料源] 視窗中,將 Orders 資料表上的 CustomerID 資料行設定為使用新的控制件。

  • 建立表單以在新控件中顯示數據。

先決條件

若要完成本教學課程,您需要在 Visual Studio 中安裝的 .NET 桌面開發和資料儲存及處理工作負載。 若要安裝它們,請開啟 Visual Studio Installer,然後選擇您想要修改的 Visual Studio 版本旁的 [修改] (或 [更多>修改])。 請參閱 修改 Visual Studio

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

  1. 如果您沒有 SQL Server Express LocalDB,請從 SQL Server Express 下載頁面或透過 Visual Studio 安裝程式進行安裝。 在 Visual Studio Installer中,您可以將 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 範例資料庫中的 Customers 數據表,使用 Orders精靈] 建立數據源。

  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

若要設定查閱系結,請選取 [數據源] 視窗中的主要 [客戶] 節點,然後將它拖曳到 Form1CustomerIDLookupBox 下拉式方塊。

這會設定數據系結以顯示 CompanyName 數據表中的 Customers ,同時維護 CustomerID 數據表中的 Orders 值。

執行應用程式

  • F5 以執行應用程式。

  • 流覽某些記錄,並確認 CompanyName 出現在 LookupBox 控件中。