C#窗體控件更新(八)

23、菜單控件
Windows 的菜單系統是圖形用戶界面(GUI)的重要組成之一,在 VisualC#中使用 MainMenu 控件可以很
方便地實現Windows的菜單,MainMenu控件在工具箱中的圖標爲 。
1.菜單的結構
10-9和圖10-10 是典型的菜單結構。其中有文字的單個命令稱菜單項,頂層菜單項是橫着排列的,單擊
某個菜單項後彈出的稱爲菜單或子菜單,它們均包含若干個菜單項,菜單項其實是 MenuItem 類的一個對
象。菜單項有的是變灰顯示的,表示該菜單項當前是被禁止使用的。有的菜單項的提示文字中有帶下劃線
的字母,該字母稱爲熱鍵(或訪問鍵),若是頂層菜單,可通過按“ALT+熱鍵”打開該菜單,若是某個子
菜單中的一個選項,則在打開子菜單後直接按熱鍵就會執行相應的菜單命令。有的菜單項後面有一個按鍵
或組合鍵,稱快捷鍵,在不打開菜單的情況下按快捷鍵,將執行相應的命令。在圖 10-9 中,【保存文件】
菜單項是加粗顯示的,該菜單項稱爲默認項。圖10-9的【另存爲】和【退出】之間有一個灰色的線條,該
線條稱爲分隔線或分隔符。在圖 10-10 中菜單項【白色背景】前面有一個“√”號,稱爲選中標記,菜單

項加上選中標記表示該菜單項代表的功能當前正在起作用。

2.菜單項的常用屬性
1)Text 屬性:用來獲取或設置一個值,通過該值指示菜單項標題。當使用 Text 屬性爲菜單項指定標題
時,還可以在字符前加一個“&”號來指定熱鍵(訪問鍵,即加下劃線的字母)。例如,若要將“File”中
“F”指定爲訪問鍵,應將菜單項的標題指定爲“&File” 。
2)Checked屬性:用來獲取或設置一個值,通過該值指示選中標記是否出現在菜單項文本的旁邊。如果
要放置選中標記在菜單項文本的旁邊,屬性值爲true,否則屬性值爲false。默認值爲false。
3)DefaultItem 屬性:用來獲取或設置一個值,通過該值指示菜單項是否爲默認菜單項。值爲 true 時,
是默認菜單項,值爲 false時,不是默認菜單項。菜單的默認菜單項以粗體的形式顯示。當用戶雙擊包含默
認項的子菜單後,默認項被選定,然後子菜單關閉。
4)Enabled屬性:用來獲取或設置一個值,通過該值指示菜單項是否可用。值爲true時表示可用,值爲
false表示當前禁止使用。
5)RadioCheck 屬性:用來獲取或設置一個值,通過該值指示選中的菜單項的左邊是顯示單選按鈕還是
選中標記。值爲true時將顯示單選按鈕標記,值爲false時顯示選中標記。
6)Shortcut屬性:用來獲取或設置一個值,該值指示與菜單項相關聯的快捷鍵。
7)ShowShortcut 屬性:用來獲取或設置一個值,該值指示與菜單項關聯的快捷鍵是否在菜單項標題的
旁邊顯示。如果快捷組合鍵在菜單項標題的旁邊顯示,該屬性值爲 true,如果不顯示快捷鍵,該屬性值爲
false。默認值爲true。
8)MdiList屬性:用來獲取或設置一個值,通過該值指示是否用在關聯窗體內顯示的多文檔界面(MDI)
子窗口列表來填充菜單項。若要在該菜單項中顯示MDI子窗口列表,則設置該屬性值爲true,否則設置該
屬性的值爲false。默認值爲false。
3.菜單項的常用事件
菜單項的常用事件主要有Click事件,該事件在用戶單擊菜單項時發生。
24、多窗體程序設計
Windows應用程序很少只由一個窗體組成, 一
般情況下一個應用程序均擁有很多個窗體。
C#項目剛建立時只有一個名爲Form1的窗體,
要建立多窗體應用程序應首先爲項目添加窗
體,添加窗體的方法如下。
1) 單擊工具欄上的按鈕 或執行【項
目】→【添加Windows窗體】命令,
將會出現如圖 10-17 所示的【添加新

項】對話框。
2) 在該對話框的【模板】下面的列表框中       選中【Windows 窗體】圖標,在【名稱】文本框中輸
入窗體名,然後單擊【打開】按鈕,即爲應用程序添加了一個窗體。
25、MDI 應用程序設計
1.MDI應用程序的概念
在前面的章節中,所創建的都是單文檔界面(SDI)應用程序。這樣的程序(如記事本和畫圖程序)僅支
持一次打開一個窗口或文檔。如果需要編輯多個文檔,必須創建SDI應用程序的多個實例。而使用多文檔
界面(MDI)程序(如Word和AdobePhotoshop)時,用戶可以同時編輯多個文檔。MDI程序中的應用程
序窗口稱爲父窗口,應用程序內部的窗口稱爲子窗口。雖
MDI應用程序可以具有多個子窗口, 但是每個子窗口卻
只能有一個父窗口。此外,處於活動狀態的子窗口最大數
目是 1。子窗口本身不能再成爲父窗口,而且不能移動到
它們的父窗口區域之外。除此以外,子窗口的行爲與任何
其他窗口一樣(如可以關閉、最小化和調整大小等)。一個
子窗口在功能上可能與父窗口的其他子窗口不同,例如,
一個子窗口可能用於編輯圖像,另一個子窗口可能用於編
輯文本,第 3 個子窗口可以使用圖形來顯示數據,但是所
有的窗口都屬於相同的MDI父窗口。圖 10-19 是一個典型
MDI應用程序。外面的窗口是應用程序窗口,裏面的兩
個小窗口是 MDI子窗口。
2.與 MDI應用程序設計有關的屬性、方法和事件
常用的MDI父窗體屬性如下。
1)ActiveMdiChild屬性:該屬性用來表示當前活動的MDI子窗口,如果當前沒有子窗口,則返回null。
2)IsMdiContainer屬性:該屬性用來獲取或設置一個值,該值指示窗體是否爲多文檔界面(MDI)子窗
體的容器,即MDI父窗體。值爲true時,表示是父窗體,值爲false時,表示不是父窗體。
3)MdiChildren屬性:該屬性以窗體數組形式返回MDI子窗體,每個數組元素對應一個 MDI子窗體。
常用的MDI子窗體的屬性有:
1)IsMdiChild屬性:該屬性用來獲取一個值,該值指示該窗體是否爲多文檔界面(MDI)的子窗體。值
true時,表示是子窗體,值爲false時,表示不是子窗體。
2)MdiParent屬性:該屬性用來指定該子窗體的MDI父窗體。與MDI應用程序設計有關的方法中,一
般只使用父窗體的LayoutMdi方法,該方法的調用格式如下:
MDI父窗體名.LayoutMdi(Value);
該方法用來在MDI父窗體中排列MDI子窗體,以便導航和操作MDI子窗體。參數Value決定排列方式,
取值有:MdiLayout.ArrangeIcons(所有 MDI 子窗體以圖標的形式排列在 MDI 父窗體的工作區內)、
MdiLayout.TileHorizontal (所有MDI子窗口均水平平鋪在MDI父窗體的工作區內)、 MdiLayout.TileVertical
(所有 MDI 子窗口均垂直平鋪在 MDI 父窗體的工作區內)和 MdiLayout.Cascade(所有 MDI 子窗口均層
疊在 MDI 父窗體的工作區內)。常用的 MDI 父窗體的事件是 MdiChildActivate,當激活或關閉一個 MDI
子窗體時將發生該事件。
3.菜單合併
父窗體和子窗體可以使用不同的菜單,這些菜單會在選擇子窗體的時候合併。如果需要指定菜單的合併方
式,程序員可以設置每個菜單項的MergeOrder屬性和MergeType屬性。

1)MergeOrder屬性:用來確定當兩個菜單合併時菜單項出現的順序,具有較低
MergeOrder的菜單項會首先出現。
2)MergeType屬性:當合並的兩個菜單的某些菜單項的MergeOrder屬性值相等時,
使用該屬性可以控制這些菜單項的顯示方式。其取值及含義如表10-4所示。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章