共用方式為


自訂控制項開發

更新:2007 年 11 月

.NET Compact Framework 提供 Windows Form 控制項,該控制項可符合大部分裝置專案的需求。這些控制項的設計目的在於有效地使用有限資源,因此並不提供對所有繼承之屬性、方法和事件的支援。若要滿足缺少的功能,可以從通用控制項衍生您自己的自訂控制項。可以藉由定義繼承自 Control 類別或組件中現有 UserControl 的公用型別,建立自訂的控制項。

最簡單的控制項自訂,是覆寫通用控制項上的方法。例如,您可以覆寫 TextBox 控制項的繼承 OnKeyPress 方法,以提供將輸入內容僅限於數字字元的程式碼。

注意事項:

.NET Compact Framework 並不支援 Windows Form 控制項中,所有繼承自其基礎控制項的屬性、方法和事件。

您可以從通用控制項衍生至:

  • 覆寫通用控制項上您自己的屬性、方法和事件。

  • 為某個控制項定義額外的屬性、方法和事件。

  • 建置複合控制項,例如 TextBoxButton 控制項的集合。

  • 定義控制項回應使用者動作的方式,例如僅接受數字資料的 TextBox

.NET Compact Framework 目前不提供針對設計階段存取加入自訂控制項的功能。

如果想要進行較為複雜的自訂,必須建立衍生自 Control 類別的自訂控制項。您可以覆寫 OnPaint 方法,以繪製控制項,並為這類需求建立非 UI 控制項做為自訂事件。

Control 基底類別並不知如何繪製衍生控制項,而且不提供 OnPaint 方法中的任何繪製邏輯。ControlOnPaint 方法僅將 Paint 事件分派給已登錄的事件接收者。

.NET Compact Framework 僅為 FormControl 類別提出 PaintResize 事件。

將自訂控制項加入至工具箱

在 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 主題顯示如何使用自訂控制項取得擴充的功能:

HOW TO:建立自訂的按兩下事件

HOW TO:建立自訂影像按鈕控制項

HOW TO:顯示漸層填滿

HOW TO:建立數字文字方塊

HOW TO:建立主控描繪清單方塊

HOW TO:建立 OnEnter 功能

HOW TO:捲動表單內容

HOW TO:排序 ListView 項目

HOW TO:使用原生回呼子類別化樹狀檢視控制項

HOW TO:使用原生回呼子類別化按鈕控制項

請參閱

概念

使用 Managed 視窗程序將控制項子類別化

其他資源

.NET Compact Framework 中的 Windows Form 控制項