逐步解說:建立支援簡單資料繫結的 Windows Form 使用者控制項
在 Windows 應用程式中顯示表單的資料時,您可以從 [工具箱] 中選擇現有的控制項,但如果應用程式需要標準控制項中沒有的功能時,您也可以撰寫自訂控制項。 本逐步解說將示範如何建立實作 DefaultBindingPropertyAttribute 的控制項。 實作 DefaultBindingPropertyAttribute 的控制項可以包含可繫結至資料的屬性。 這類控制項與 TextBox 或 CheckBox 很相似。
如需控制項撰寫的詳細資訊,請參閱在設計階段開發 Windows Form 控制項。
當您在撰寫控制項以便用於資料繫結案例時,就必須實作下列其中一個資料繫結屬性 (Attribute):
資料繫結屬性使用方式 |
---|
在可顯示單一資料行 (或屬性) 的簡單控制項 (例如 TextBox) 上實作 DefaultBindingPropertyAttribute。 (這個處理會在此逐步解說頁中描述)。 |
在可顯示資料清單 (或資料表) 的控制項 (例如 DataGridView) 上實作 ComplexBindingPropertiesAttribute。 如需詳細資訊,請參閱逐步解說:建立支援複雜資料繫結的 Windows Form 使用者控制項。 |
在可顯示資料清單 (或資料表) 但同時需要呈現單一資料行或屬性的控制項 (例如 ComboBox) 上實作 LookupBindingPropertiesAttribute。 如需詳細資訊,請參閱逐步解說:建立支援查閱資料繫結的 Windows Form 使用者控制項。 |
這個逐步解說會建立簡單控制項,以便顯示來自資料表中單一資料行的資料。 這個範例會使用 Northwind 範例資料庫中 Customers 資料表的 Phone 資料行。 該簡單使用者控制項將會使用 MaskedTextBox 並將遮罩設定為電話號碼,以標準的電話號碼格式顯示客戶的電話號碼。
在瀏覽這份逐步解說期間,您將了解如何:
建立新的 [Windows 應用程式]。
將新的 [使用者控制項] 加入到專案中。
視覺化地設計使用者控制項。
實作 DefaultBindingProperty 屬性。
使用資料來源組態精靈建立資料集。
在 [資料來源] 視窗中,將 [Phone] 資料行設定為使用新的控制項。
建立一個表單,以便在新的控制項中顯示資料。
必要條件
若要完成這個逐步解說,您必須要有:
- Northwind 範例資料庫的存取權。 如需詳細資訊,請參閱 HOW TO:安裝範例資料庫。
建立 Windows 應用程式
第一個步驟是要建立一個 [Windows 應用程式]。
若要建立新的 Windows 專案
在 Visual Studio 中,從 [檔案] 功能表建立新的 [專案]。
將專案命名為 SimpleControlWalkthrough。
選取 [Windows 應用程式],並按 [確定]。 如需詳細資訊,請參閱建立 Windows 架構的應用程式。
[SimpleControlWalkthrough] 專案隨即建立並加入至 [方案總管]。
將使用者控制項加入至專案
由於這個逐步解說會從 [使用者控制項] 建立簡單的可資料繫結控制項,所以請將 [使用者控制項] 項目加入至 [SimpleControlWalkthrough] 專案中。
若要將使用者控制項加入專案中
從 [專案] 功能表中選擇 [加入使用者控制項]。
在 [名稱] 區域中輸入 PhoneNumberBox,然後按一下 [加入]。
[PhoneNumberBox] 控制項就會加入至 [方案總管] 並在設計工具中開啟。
設計 PhoneNumberBox 控制項
這個逐步解說會根據現有的 MaskedTextBox 展開,以便建立 PhoneNumberBox 控制項。
若要設計 PhoneNumberBox 控制項
從 [工具箱] 將 MaskedTextBox 拖曳到使用者控制項的設計介面上。
在您剛拖曳的 MaskedTextBox 上選取智慧標籤,然後選擇 [設定遮罩]。
在 [輸入遮罩] 對話方塊中選取 [電話號碼],然後按一下 [確定] 設定遮罩。
加入必要的資料繫結屬性
針對支援資料繫結的簡單控制項,實作 DefaultBindingPropertyAttribute。
若要實作 DefaultBindingProperty 屬性
將 PhoneNumberBox 控制項切換成程式碼檢視 (在 [檢視] 功能表上選擇 [程式碼])。
用下列程式碼取代 PhoneNumberBox 中的程式碼:
<System.ComponentModel.DefaultBindingProperty("PhoneNumber")> Public Class PhoneNumberBox Public Property PhoneNumber() As String Get Return MaskedTextBox1.Text End Get Set(ByVal value As String) MaskedTextBox1.Text = value End Set End Property End Class
using System.Windows.Forms; namespace CS { [System.ComponentModel.DefaultBindingProperty("PhoneNumber")] public partial class PhoneNumberBox : UserControl { public string PhoneNumber { get{ return maskedTextBox1.Text; } set{ maskedTextBox1.Text = value; } } public PhoneNumberBox() { InitializeComponent(); } } }
從 [建置] 功能表中,選擇 [建置方案]。
從資料庫中建立資料來源
這個步驟會使用 [資料來源組態精靈],根據 Northwind 範例資料庫的 Customers 資料表來建立資料來源。 您必須可以存取 Northwind 範例資料庫,才能建立連接。 如需設定 Northwind 範例資料庫的詳細資訊,請參閱 HOW TO:安裝範例資料庫。
若要建立資料來源
按一下 [資料] 功能表上的 [顯示資料來源]。
在 [資料來源] 視窗中,選取 [加入新資料來源],啟動 [資料來源組態精靈]。
請選取 [選擇資料來源類型] 頁面上的 [資料庫],再按 [下一步]。
在 [選擇資料連接] 頁面上,執行下列其中一項動作:
如果下拉式清單中有提供 Northwind 範例資料庫的資料連接,請選取這個資料連接。
或
選取 [新增連接],啟動 [新增/修改連接] 對話方塊。 如需詳細資訊,請參閱新增/修改連接對話方塊 (一般)。
如果資料庫需要密碼,請選取選項來加入敏感性資料,然後按一下 [下一步]。
按一下 [將連接字串儲存到應用程式組態檔] 頁面上的 [下一步]。
在 [選擇您的資料庫物件] 頁面上,展開 [資料表] 節點。
選取 Customers 資料表,再按一下 [完成]。
[NorthwindDataSet] 會加入專案中,而且 Customers 資料表會出現在 [資料來源] 視窗中。
將 Phone 資料行設定為使用 PhoneNumberBox 控制項
在將項目拖曳到表單之前,您可以先在 [資料來源] 視窗內設定要建立的控制項。
若要將 phone 資料行設定為繫結至 PhoneNumberBox 控制項
在設計工具中開啟 [Form1]。
在 [資料來源] 視窗中,展開 [Customers] 節點。
按一下 [Customers] 節點上的下拉箭號,然後從控制項清單中選擇 [詳細資訊]。
按一下 [Phone] 資料行上的下拉箭號,然後選擇 [自訂]。
在 [自訂資料欄位 UI 選項] 對話方塊中,從 [關聯的控制項] 清單中選取 [PhoneNumberBox]。
按一下 [Phone] 資料行上的下拉箭號,然後選擇 [PhoneNumberBox]。
將控制項加入到表單中
您可以從 [資料來源] 視窗將項目拖曳至表單上,藉以建立資料繫結控制項。
若要在表單上建立資料繫結控制項
從 [資料來源] 視窗,將 [Customers] 主節點拖曳至表單上,然後確定 PhoneNumberBox 控制項會用來顯示 Phone 資料行中的資料。
具有描述標籤的資料繫結控制項以及用於巡覽資料錄的工具區域 (BindingNavigator) 就會出現在表單上。 NorthwindDataSet、CustomersTableAdapter、BindingSource 和 BindingNavigator 則會出現在元件匣中。
執行應用程式
若要執行應用程式
- 請按 F5 以執行應用程式。
後續步驟
根據應用程式的需求而定,在建立支援資料繫結的控制項後可能會有幾個想要執行的步驟。 接下來一般的步驟包括:
將自訂控制項放置在控制項程式庫中,以便您可以在其他應用程式中重複使用它們。 如需詳細資訊,請參閱 Windows Control Library Template。
建立支援更複雜資料繫結案例的控制項。 如需詳細資訊,請參閱逐步解說:建立支援複雜資料繫結的 Windows Form 使用者控制項 和逐步解說:建立支援查閱資料繫結的 Windows Form 使用者控制項。
請參閱
工作
概念
將 Windows Form 控制項繫結至 Visual Studio 中的資料