首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Windows Forms 選單設計完全指南 (2):選單類別架構與核心類別

     編輯:關於C語言

二、選單程式設計使用類別與體系架構

.NET 類別庫定義了龐大的基礎類別供開發者使用,其中有數個專門用於撰寫選單程式的類別。透過這些類別,您可以設計出任何想要的選單介面。

2.1 Windows Forms 選單類別體系架構

.NET 類別庫中選單類別的繼承階層結構如下:

Object
└── MarshalByRefObject
    └── Component
        └── Menu
            ├── ContextMenu
            ├── MainMenu
            └── MenuItem

從架構可見,選單程式設計主要運用三個繼承自 Menu 類別的類別:

  • ContextMenu:封裝彈出式選單(右鍵選單)定義
  • MainMenu:封裝主選單(視窗頂端選單列)定義
  • MenuItem:封裝選單項目定義,為所有選單的基本構成元素

此外,.NET 類別庫還提供 Menu.MenuItemCollection 集合類別方便管理選單項目:

public class Menu.MenuItemCollection : IList, ICollection, IEnumerable

2.2 System.Windows.Forms.Menu 類別

抽象類別,為各類選單的基類,封裝 Windows Forms 選單大部分共用屬性。開發時不直接使用此類別(也無法實例化),而是使用其衍生類別 MainMenu、MenuItem、ContextMenu 進行開發;但可由此類別衍生自訂選單。

關鍵屬性:MenuItems — 表示該物件所包含的選單項目集合。

2.3 System.Windows.Forms.MenuItem 類別

封裝選單項目的各種成員。所有選單項目均由 MenuItem 物件構成。包含選單項目詳細定義:屬性、事件、方法等。MenuItem 為各類選單的基本元素,後續章節將詳細講解其用法。

2.4 System.Windows.Forms.MainMenu 類別

作為視窗主選單的容器,實例化產生表單主選單物件。提供兩種建構函式:

  • MainMenu():無參數,產生不含選單項目的主選單物件。
  • MainMenu(MenuItem[] menus):接受選單項目陣列,產生包含指定選單項目的主選單物件。

在 Menu 基礎上新增 RightToLeft 屬性,設為 RightToLeft.Yes 可使主選單從視窗右側向左排列(符合特定語言習慣)。

提供 CloneMenu() 方法方便複製主選單物件;GetForm() 方法可查看主選單所屬表單。

2.5 System.Windows.Forms.ContextMenu 類別

封裝彈出式選單各種特性與功能。使用此類別,當在控制項或表單任意區域點擊右鍵時,可彈出快捷選單。

兩個建構函式:

  • ContextMenu():產生不含選單項目的彈出式選單。
  • ContextMenu(MenuItem[] menus):產生包含指定選單項目的彈出式選單。

在 Menu 基礎上新增兩個屬性:

  • RightToLeft:選單項目由右向左對齊。
  • SourceControl:回傳 Control 型別,表示目前顯示彈出選單對應的控制項。

Show() 方法可主動顯示彈出選單。彈出時觸發 Popup 事件,可在事件處理方法中於顯示前執行操作;亦可透過虛擬方法 OnPopup() 觸發 Popup 事件。

2.6 System.Windows.Forms.Menu.MenuItemCollection 類別

表示一系列 MenuItem 物件的集合,提供管理集合元素的各種方法。繼承自 Object,並實作 IList、ICollection、IEnumerable 介面,繼承 .NET 集合操作功能。

透過選單項目集合類別,可使用集合操作方法(Add()、AddRange()、Remove()、RemoveAt()、索引存取等)極方便地管理一系列選單項目,如主選單上的所有項目、某主選單下的所有子選單等。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved