合併 Windows Form MenuStrip 控制項中的功能表項目

如果您有多文檔介面 (MDI) 應用程式,可以將子表單中的功能表項目或整個功能表合併到父表單的功能表。

本主題描述與 MDI 應用程式中合併功能表項目相關聯的基本概念。

一般概念

合併程式同時涉及目標和原始檔控制:

  • 目標是 MenuStrip 您要合併功能表項目之主要或 MDI 父表單上的控制項。

  • 來源是 MenuStrip MDI 子表單上的控制項,其中包含您想要合併至目標功能表的功能表項目。

屬性 MdiWindowListItem 會識別功能表項目,其下拉式清單會填入目前 MDI 父表單之 MDI 子系的標題。 例如,您通常會列出目前在 [視窗 ] 功能表上開啟的 MDI 子系。

屬性 IsMdiWindowListEntry 會識別哪些功能表項目來自 MenuStrip MDI 子表單上的 。

您可以手動或自動合併功能表項目。 功能表項目會以相同方式合併這兩種方法,但合併會以不同的方式啟動,如本主題稍後的和「自動合併」小節中所述。 在手動和自動合併中,每個合併動作都會影響下一個合併動作。

MenuStrip 合併會將功能表項目從一個移到另一個 ToolStrip 功能表項目,而不是複製它們,就像 的情況 MainMenu 一樣。

MergeAction 值

您可以使用 屬性,在來源 MenuStripMergeAction 中的功能表項目上設定合併動作。

下表描述可用合併動作的意義和一般用法。

MergeAction 值 描述 一般用法
Append (預設值)將來源專案加入目標專案集合的結尾。 啟動程式的某些部分時,將功能表項目加入功能表的結尾。
Insert 將來源專案加入至目標專案的集合,該位置是由在來源專案上設定的屬性所 MergeIndex 指定的位置。 啟動程式的某些部分時,將功能表項目新增至中間或功能表的開頭。

如果 這兩個功能表項目的值 MergeIndex 都相同,則會以反向順序加入。 適當地設定 MergeIndex 以保留原始順序。
Replace 尋找文字比對,或在找不到文字相符專案時使用 MergeIndex 值,然後將相符的目標功能表項目取代為來源功能表項目。 將目標功能表項目取代為相同名稱且執行不同動作的來源功能表項目。
MatchOnly 尋找文字比對,或在找不到任何文字相符專案時使用 MergeIndex 值,然後將來源中的所有下拉式專案新增至目標。 建置功能表結構,以將功能表項目插入或新增至子功能表,或從子功能表移除功能表項目。 例如,您可以將功能表項目從 MDI 子系新增至主要 MenuStrip [另存新檔 ] 功能表。

MatchOnly 可讓您流覽功能表結構,而不採取任何動作。 它提供評估後續專案的方法。
Remove 尋找文字比對,或在找不到任何文字相符專案時使用 MergeIndex 值,然後從目標中移除專案。 從目標 MenuStrip 移除功能表項目。

手動合併

只有 MenuStrip 控制項會參與自動合併。 若要合併其他控制項的專案,例如 ToolStripStatusStrip 控制項,您必須視需要在程式碼中呼叫 MergeRevertMerge 方法,以手動方式合併這些專案。

自動合併

您可以藉由啟用來源表單,針對 MDI 應用程式使用自動合併。 若要在 MDI 應用程式中使用 MenuStrip ,請將 MainMenuStrip 屬性設定為目標 MenuStrip ,以便在來源 MenuStrip 上執行的合併動作反映在目標 MenuStrip 中。

您可以啟用 MDI 來源上的 來觸發自動合併 MenuStrip 。 啟用時,來源 MenuStrip 會合並至 MDI 目標。 當新表單變成使用中時,合併會在最後一個表單上還原,並在新表單上觸發。 您可以視需要在每個 ToolStripItem 上設定 屬性, MergeAction 並在每個 MenuStrip 上設定 AllowMerge 屬性,以控制此行為。

另請參閱