.NET 類別庫定義了龐大的基礎類別供開發者使用,其中有數個專門用於撰寫選單程式的類別。透過這些類別,您可以設計出任何想要的選單介面。
.NET 類別庫中選單類別的繼承階層結構如下:
Object
└── MarshalByRefObject
└── Component
└── Menu
├── ContextMenu
├── MainMenu
└── MenuItem
從架構可見,選單程式設計主要運用三個繼承自 Menu 類別的類別:
此外,.NET 類別庫還提供 Menu.MenuItemCollection 集合類別方便管理選單項目:
public class Menu.MenuItemCollection : IList, ICollection, IEnumerable
抽象類別,為各類選單的基類,封裝 Windows Forms 選單大部分共用屬性。開發時不直接使用此類別(也無法實例化),而是使用其衍生類別 MainMenu、MenuItem、ContextMenu 進行開發;但可由此類別衍生自訂選單。
關鍵屬性:MenuItems — 表示該物件所包含的選單項目集合。
封裝選單項目的各種成員。所有選單項目均由 MenuItem 物件構成。包含選單項目詳細定義:屬性、事件、方法等。MenuItem 為各類選單的基本元素,後續章節將詳細講解其用法。
作為視窗主選單的容器,實例化產生表單主選單物件。提供兩種建構函式:
MainMenu():無參數,產生不含選單項目的主選單物件。MainMenu(MenuItem[] menus):接受選單項目陣列,產生包含指定選單項目的主選單物件。在 Menu 基礎上新增 RightToLeft 屬性,設為 RightToLeft.Yes 可使主選單從視窗右側向左排列(符合特定語言習慣)。
提供 CloneMenu() 方法方便複製主選單物件;GetForm() 方法可查看主選單所屬表單。
封裝彈出式選單各種特性與功能。使用此類別,當在控制項或表單任意區域點擊右鍵時,可彈出快捷選單。
兩個建構函式:
ContextMenu():產生不含選單項目的彈出式選單。ContextMenu(MenuItem[] menus):產生包含指定選單項目的彈出式選單。在 Menu 基礎上新增兩個屬性:
RightToLeft:選單項目由右向左對齊。SourceControl:回傳 Control 型別,表示目前顯示彈出選單對應的控制項。Show() 方法可主動顯示彈出選單。彈出時觸發 Popup 事件,可在事件處理方法中於顯示前執行操作;亦可透過虛擬方法 OnPopup() 觸發 Popup 事件。
表示一系列 MenuItem 物件的集合,提供管理集合元素的各種方法。繼承自 Object,並實作 IList、ICollection、IEnumerable 介面,繼承 .NET 集合操作功能。
透過選單項目集合類別,可使用集合操作方法(Add()、AddRange()、Remove()、RemoveAt()、索引存取等)極方便地管理一系列選單項目,如主選單上的所有項目、某主選單下的所有子選單等。