自訂控制項開發
更新:2007 年 11 月
.NET Compact Framework 提供 Windows Form 控制項,該控制項可符合大部分裝置專案的需求。這些控制項的設計目的在於有效地使用有限資源,因此並不提供對所有繼承之屬性、方法和事件的支援。若要滿足缺少的功能,可以從通用控制項衍生您自己的自訂控制項。可以藉由定義繼承自 Control 類別或組件中現有 UserControl 的公用型別,建立自訂的控制項。
最簡單的控制項自訂,是覆寫通用控制項上的方法。例如,您可以覆寫 TextBox 控制項的繼承 OnKeyPress 方法,以提供將輸入內容僅限於數字字元的程式碼。
注意事項: |
---|
.NET Compact Framework 並不支援 Windows Form 控制項中,所有繼承自其基礎控制項的屬性、方法和事件。 |
您可以從通用控制項衍生至:
覆寫通用控制項上您自己的屬性、方法和事件。
為某個控制項定義額外的屬性、方法和事件。
定義控制項回應使用者動作的方式,例如僅接受數字資料的 TextBox。
.NET Compact Framework 目前不提供針對設計階段存取加入自訂控制項的功能。
如果想要進行較為複雜的自訂,必須建立衍生自 Control 類別的自訂控制項。您可以覆寫 OnPaint 方法,以繪製控制項,並為這類需求建立非 UI 控制項做為自訂事件。
Control 基底類別並不知如何繪製衍生控制項,而且不提供 OnPaint 方法中的任何繪製邏輯。Control 的 OnPaint 方法僅將 Paint 事件分派給已登錄的事件接收者。
.NET Compact Framework 僅為 Form 和 Control 類別提出 Paint 和 Resize 事件。
將自訂控制項加入至工具箱
在 Microsoft Visual Studio 2005 中為自訂控制項建立專案時,控制項會在應用程式編譯時自動加入至 [工具箱]。您可以使用下列其中一種專案類型建立自訂控制項:
控制項程式庫
類別庫
類別庫 (1.0)
若要將自訂控制項加入至 [工具箱],按一下 [工具] 功能表的 [選擇工具箱項目]。接下來就可以瀏覽控制項的組件。
自訂控制項技術和考量
在建立自訂控制項時,請注意下列事項:
.NET Compact Framework 不支援從父控制項繼承值,完整 NET Framework 中的某些控制項則可以。若要解決這個問題,可以使用 OnParentChanged 方法判斷父項目變更的時機,然後採取適當的動作。下列的程式碼範例顯示在父項目變更時變更背景色彩:
protected override void OnParentChanged(EventArgs e) { base.OnParentChanged(e); this.BackColor = Parent.BackColor; }
Protected Overrides Sub OnParentChanged(ByVal e As EventArgs) MyBase.OnParentChanged(e) Me.BackColor = Parent.BackColor End Sub
.NET Compact Framework 不支援繼承父控制項的字型。
偵測自訂控制項上發生「點選並按住」事件的位置,顯示內容功能表來處理 Popup 事件,然後使用 MousePosition 屬性查詢目前滑鼠座標。
若要點離自訂控制項前往上一個控制項,在偵測到 Up 鍵時,在 KeyDown 事件處理常式中使用下列程式碼。
this.Parent.Controls( this.Parent.GetChildIndex(customcontrol) - 1).Focus()
Me.Parent.Controls( _ Me.Parent.GetChildIndex(customcontrol) - 1).Focus
HOW TO 主題
下列的 HOW TO 主題顯示如何使用自訂控制項取得擴充的功能: