共用方式為


逐步解說:建立支援查閱資料繫結的 Windows Form 使用者控制項

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

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

當您在撰寫控制項以便用於資料繫結案例時,就必須實作下列其中一個資料繫結屬性 (Attribute):

資料繫結屬性使用方式

在可顯示單一資料行 (或屬性) 的簡單控制項 (例如 TextBox) 上實作 DefaultBindingPropertyAttribute。 如需詳細資訊,請參閱逐步解說:建立支援簡單資料繫結的 Windows Form 使用者控制項

在可顯示資料清單 (或資料表) 的控制項 (例如 DataGridView) 上實作 ComplexBindingPropertiesAttribute。 如需詳細資訊,請參閱逐步解說:建立支援複雜資料繫結的 Windows Form 使用者控制項

在可顯示資料清單 (或資料表) 但同時需要呈現單一資料行或屬性的控制項 (例如 ComboBox) 上實作 LookupBindingPropertiesAttribute (這個處理會在此逐步解說頁中描述)。

這個逐步解說會建立一個查閱控制項,以便繫結至兩個資料表中的資料。 這個範例會使用 Northwind 範例資料庫的 Customers 和 Orders 資料表。 此查閱控制項將會繫結至 Orders 資料表的 CustomerID 欄位。 它將會使用這個值來查閱 Customers 資料表中的 CompanyName。

在瀏覽這份逐步解說期間,您將了解如何:

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

  • 將新的 [使用者控制項] 加入到專案中。

  • 視覺化地設計使用者控制項。

  • 實作 LookupBindingProperty 屬性。

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

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

  • 建立一個表單,以便在新的控制項中顯示資料。

必要條件

若要完成這個逐步解說,您必須要有:

建立 Windows 應用程式

第一個步驟是建立 [Windows 應用程式]。

若要建立新的 Windows 專案

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

  2. 將專案命名為 LookupControlWalkthrough。

  3. 選取 [Windows 應用程式],並按一下 [確定]。 如需詳細資訊,請參閱開發用戶端應用程式

    [LookupControlWalkthrough] 專案隨即建立並加入至 [方案總管]。

將使用者控制項加入至專案

由於這個逐步解說會從 [使用者控制項] 建立查閱控制項,所以請將 [使用者控制項] 項目加入至 [LookupControlWalkthrough] 專案中。

若要將使用者控制項加入專案中

  1. 從 [專案] 功能表中選取 [加入使用者控制項]。

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

    [LookupBox] 控制項就會加入至 [方案總管] 並在設計工具中開啟。

設計 LookupBox 控制項

若要設計 LookupBox 控制項

  • 從 [工具箱] 將 ComboBox 拖曳到使用者控制項的設計介面上。

加入必要的資料繫結屬性

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

若要實作 LookupBindingProperties 屬性

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

  2. 以下列程式碼取代 LookupBox 中的程式碼:

    <System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")>
    Public Class LookupBox
    
        Public Property DataSource() As Object
            Get
                Return ComboBox1.DataSource
            End Get
            Set(ByVal value As Object)
                ComboBox1.DataSource = value
            End Set
        End Property
    
        Public Property DisplayMember() As String
            Get
                Return ComboBox1.DisplayMember
            End Get
            Set(ByVal value As String)
                ComboBox1.DisplayMember = value
            End Set
        End Property
    
        Public Property ValueMember() As String
            Get
                Return ComboBox1.ValueMember
            End Get
            Set(ByVal value As String)
                ComboBox1.ValueMember = value
            End Set
        End Property
    
        Public Property LookupMember() As String
            Get
                Return ComboBox1.SelectedValue.ToString()
            End Get
            Set(ByVal value As String)
                ComboBox1.SelectedValue = value
            End Set
        End Property
    End Class
    
    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 資料表,使用 [資料來源組態精靈] 建立資料來源。 您必須可以存取 Northwind 範例資料庫,才能建立連接。 如需設定 Northwind 範例資料庫的詳細資訊,請參閱 HOW TO:安裝範例資料庫

若要建立資料來源

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

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

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

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

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

      -或-

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

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

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

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

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

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

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

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

若要將 CustomerID 資料行設定為繫結至 LookupBox 控制項

  1. 在設計工具中開啟 [Form1]。

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

  3. 展開 [Orders] 節點 (位於 [Customers] 節點中的 [Fax] 資料行底下)。

  4. 按一下 [Orders] 節點上的下拉箭號,然後從控制項清單中選擇 [詳細資訊]。

  5. 按一下 [CustomerID] 資料行 (位於 [Orders] 節點中) 上的下拉箭號,然後選擇 [自訂]。

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

  7. 按一下 [確定]。

  8. 按一下 [CustomerID] 資料行上的下拉箭號,然後選擇 [LookupBox]。

將控制項加入至表單

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

若要在 Windows Form 上建立資料繫結控制項

  • 從 [資料來源] 視窗,將 [Orders] 節點拖曳至 Windows Form 上,然後確定 [LookupBox] 控制項會用來顯示 CustomerID 資料行中的資料。

繫結控制項以便從 Customers 資料表查閱 CompanyName

若要設定查閱繫結

  • 選取 [資料來源] 視窗中的 [Customers] 主節點,然後將它拖曳至 [Form1] 上 [CustomerIDLookupBox] 中的下拉式方塊。

    這樣就會設定資料繫結,以便顯示 Customers 資料表中的 CompanyName,同時維護 Orders 資料表中的 CustomerID 值。 如需詳細資訊,請參閱 HOW TO:在 Windows Form 應用程式中建立查閱資料表

執行應用程式

若要執行應用程式

  • 按下 F5 執行應用程式。

  • 巡覽某些資料錄,並確定 CompanyName 會顯示在 LookupBox 控制項中。

請參閱

工作

HOW TO:設定從資料來源視窗拖曳時要建立的控制項

概念

Visual Studio 2012 中資料應用程式開發的新功能

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

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

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

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

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

驗證資料

儲存資料

其他資源

連接至 Visual Studio 中的資料