合併 Windows Form MenuStrip 控制項中的功能表項目
如果您有多重文件介面 (MDI) 應用程式,您可以從子表單將功能表項目或整個功能表合併至父表單的功能表。
這個主題將說明在 MDI 應用程式中合併功能表項目的相關基本概念。
一般概念
合併程序會牽涉目標控制項和來源控制項:
目標控制項是在您要在其中合併功能表項目之主表單或 MDI 父表單上的 MenuStrip 控制項。
來源控制項是在包含要合併至目標功能表的功能表項目之 MDI 子表單上的 MenuStrip 控制項。
MdiWindowListItem 屬性可識別功能表項目,而您可以使用目前 MDI 父表單之 MDI 子表單的標題填入其下拉式清單。 例如,您通常會列出目前在 [視窗] 功能表上開啟的 MDI 子表單。
IsMdiWindowListEntry 屬性可識別哪些功能表項目來自 MDI 子表單上的 MenuStrip。
您可以手動或自動合併功能表項目。 針對這兩種方法,功能表項目都會以相同的方式進行合併,但啟動合併的方式不同,請參閱本主題稍後之<手動合併>和<自動合併>章節中的討論。 在手動合併和自動合併中,每一個合併動作都會影響下一個合併動作。
和使用 MainMenu 的情況一樣,MenuStrip 合併會將功能表項目從一個 ToolStrip 移至另一個,而非進行複製。
MergeAction 值
您可以使用 MergeAction 屬性來設定在來源 MenuStrip 中之功能表項目上的合併動作。
下表說明可用之合併動作的意義和一般的使用方式。
MergeAction 值 |
描述 |
一般用法 |
---|---|---|
(預設值) 將來源項目加入至目標項目集合的結尾處。 |
當啟動某部分程式時,將功能表項目加入至功能表的結尾處。 |
|
根據在來源項目上設定之 MergeIndex 屬性所指定的位置,將來源項目加入至目標項目的集合中。 |
當啟動某部分程式時,將功能表項目加入至功能表的中間或開頭。 如果兩個功能表項目的 MergeIndex 值相同,則會以相反的順序加入。 請適當設定 MergeIndex,以保留原始的順序。 |
|
尋找相符的文字,或者在找不到相符的文字時使用 MergeIndex 值,然後以來源功能表項目取代相符的目標功能表項目。 |
使用名稱相同,但用途不同的來源功能表項目取代目標功能表項目。 |
|
尋找相符的文字,或者在找不到相符的文字時使用 MergeIndex 值,然後將來源的所有下拉式項目加入至目標。 |
建置功能表結構,將功能表項目插入或加入至子功能表,或從子功能表中移除功能表項目。 例如,您可以將功能表項目從 MDI 子表單加入至主 MenuStrip 的 [另存新檔] 功能表。 MatchOnly 可以讓您透過功能表結構進行巡覽,而不需要執行任何動作。 它提供了評估後續項目的方法。 |
|
尋找相符的文字,或者在找不到相符的文字時使用 MergeIndex 值,然後將該項目從目標中移除。 |
將功能表項目從目標 MenuStrip 中移除。 |
手動合併
只有 MenuStrip 控制項會加入自動合併。 若要組合其他控制項 (例如:ToolStrip 和 StatusStrip 控制項) 的項目,您必須視需要在程式碼中呼叫 Merge 和 RevertMerge 方法,手動合併這些項目。
自動合併
您可以透過啟動來源表單來使用 MDI 應用程式的自動合併功能。 若要在 MDI 應用程式中使用 MenuStrip,請將 MainMenuStrip 屬性設定為目標 MenuStrip,讓在來源 MenuStrip 上執行的合併動作可以反映在目標 MenuStrip 中。
您可以透過啟動 MDI 來源上的 MenuStrip 來觸發自動合併。 在啟動之後,來源 MenuStrip 便會立即合併至 MDI 目標。 當新的表單變成使用中時,便會在上一個表單中還原合併,然後在新的表單上觸發合併。 您可以視需要設定每一個 ToolStripItem 上的 MergeAction 屬性,以及設定每一個 MenuStrip 上的 AllowMerge 屬性,以控制這個行為。
請參閱
工作
HOW TO:使用 MenuStrip 建立 MDI 視窗清單 (Windows Form)