控制項類型建議
.NET Framework 提供您開發與實作新控制項的能力。 除了熟悉的使用者控制項,您現在將發現可以撰寫自訂的控制項以執行它們自己的繪製,甚至可以透過繼承來擴充現有控制項的功能。 決定建立哪種類型的控制項可能會令人覺得困惑。 本章節特別說明您可繼承的不同類型控制項之間的差異,並提供為您的專案所選擇類型的相關注意事項。
注意事項 |
---|
若您想要撰寫控制項以便在 Web Form 上使用,請參閱開發自訂的 ASP.NET 伺服器控制項。 |
繼承 Windows Form 控制項
您可以從任何現有的 Windows Form 控制項衍生出繼承控制項。 這個方法可讓您保留 Windows Form 控制項的所有繼承功能,然後藉由加入自訂屬性、方法或其他功能來擴充該功能。 例如,您可以建立衍生自 TextBox 的控制項,這個控制項只能接受數字且會自動將輸入轉換成值。 這類控制項可能包含每當文字方塊中的文字變更時所會呼叫的驗證程式碼,且可能有額外的 Value 屬性。 在部分控制項中,您也可以藉由覆寫基底類別的 OnPaint 方法,將自訂外觀加入至控制項的圖形介面。
如果發生下列情況,請繼承 Windows Form 控制項:
您需要的大部分功能與現有的 Windows Form 控制項相同。
您不需要自訂的圖形介面,或者您希望針對現有的控制項設計新的圖形前端 (Front End)。
繼承 UserControl 類別
使用者控制項是封裝至共用容器 (Container) 的 Windows Form 控制項的集合。 這個容器保留每一個 Windows Form 控制項相關的所有繼承功能,且可讓您選擇性的公開及繫結其屬性。 建置用來顯示資料庫的客戶地址資料的控制項,即是使用者控制項的一個範例。 這個控制項可包括多個顯示欄位的文字方塊,以及巡覽記錄的按鈕控制項。 資料繫結屬性可選擇性的公開,而且整個控制項都可以在應用程式之間封裝 (Package) 與重複使用。
如果發生下列情況,請繼承 UserControl 類別:
- 您要將多個 Windows Form 控制項的功能結合至單一可重複使用的單位。
繼承 Control 類別
另一個建立控制項的方法,是藉由繼承 Control,以便實際地從頭開始建立一個控制項。 Control 類別提供控制項 (例如事件) 需要的所有基本功能,但不提供控制項特定的功能或圖形介面。 藉由繼承 Control 類別以建立控制項,比繼承使用者控制項或現有的 Windows Form 控制項更費力。 作者必須撰寫控制項的 OnPaint 事件的程式碼,以及需要的任何特定功能的程式碼。 但是仍然允許較大的彈性,而且您可以自訂控制項以完全符合您的需求。 例如能夠複製類比時鐘的外觀和動作的時鐘控制項,就是自訂控制項的範例。 可叫用 (Invoke) 自訂繪製,使時鐘的指針依據內部計時器元件的 Tick 事件移動。
如果發生下列情況,請繼承 Control 類別:
您要提供您控制項的自訂圖形表示。
您需要實作無法從標準控制項取得的自訂功能。