次の方法で共有


Windows フォームの MenuStrip コントロールへのメニュー項目のマージ

更新 : 2007 年 11 月

マルチ ドキュメント インターフェイス (MDI: Multiple Document Interface) アプリケーションがある場合、子フォームのメニュー項目またはメニュー全体を親フォームのメニューにマージできます。

このトピックでは、MDI アプリケーションでメニュー項目のマージに関連する基本概念について説明します。

一般的な概念

マージ手順には、ターゲット コントロールとソース コントロールが関係します。

  • ターゲットは、メニュー項目をマージするメイン フォームまたは MDI 親フォームの MenuStrip コントロールです。

  • ソースは、ターゲット メニューにマージするメニュー項目が含まれる MDI 子フォームの MenuStrip コントロールです。

MdiWindowListItem プロパティは、作成するドロップダウン リストのメニュー項目を、現在の MDI 親フォームに対する MDI 子フォームのタイトルを使用して識別します。たとえば、[ウィンドウ] メニューで現在開いている MDI の子フォームを列挙します。

IsMdiWindowListEntry プロパティは、MDI 子フォームの MenuStrip のどのメニュー項目を表示するかを指定します。

メニュー項目のマージは手動または自動で行うことができます。どちらの方法でもメニュー項目は同様にマージされますが、マージをアクティブにする方法は異なります。詳細については、このトピックで後述する「手動マージ」と「自動マージ」を参照してください。手動マージと自動マージのどちらでも、個々のマージ処理は次のマージ処理に影響します。

MenuStrip のマージによって、ある ToolStrip のメニュー項目を閉じずに他のメニュー項目に移動します。MainMenu の場合と同様です。

MergeAction の値

MergeAction プロパティを使用してソース MenuStrip のメニュー項目にマージ処理を設定します。

次の表で、使用できるマージ処理の意味と一般的な使用法を説明します。

MergeAction の値

説明

一般的な用途

Append

(既定) ターゲット項目のコレクションの末尾にソース項目を追加します。

プログラムの一部がアクティブな場合、メニューの末尾にメニュー項目を追加します。

Insert

ターゲット項目のコレクションのうち、ソース項目に設定された MergeIndex プロパティに相当する場所にソース項目を追加します。

プログラムの一部がアクティブな場合、メニューの中間または先頭にメニュー項目を追加します。

MergeIndex 値がどちらのメニュー項目でも同じ場合、逆順で追加します。元の順序を維持するには、MergeIndex を適切に設定します。

Replace

一致するテキストを検索します。一致するテキストが見つからない場合は MergeIndex 値を使用します。次に、この一致するターゲット メニュー項目をソース メニュー項目で置換します。

ターゲット メニュー項目を、名前は同じで何かが異なるソース メニュー項目で置換します。

MatchOnly

一致するテキストを検索します。一致するテキストが見つからない場合は MergeIndex 値を使用します。次に、ソースのすべてのドロップダウン項目をターゲットに追加します。

メニュー項目をサブメニューに挿入または追加したり、メニュー項目をサブメニューから削除したりするメニュー構造を構築します。たとえば、MDI 子フォームのメニュー項目をメインの MenuStrip の [名前を付けて保存] メニューに追加できます。

MatchOnly を使用すると、処理を実行しなくてもメニュー構造内を検索できます。これは、以降の項目を評価する 1 つの方法です。

Remove

一致するテキストを検索します。一致するテキストが見つからない場合は MergeIndex 値を使用します。次に、ターゲットから項目を削除します。

ターゲットの MenuStrip からメニュー項目を削除します。

手動マージ

MenuStrip コントロールのみが自動マージに参加します。ToolStripStatusStrip など、他のコントロールの項目を結合するには、必要に応じて Merge メソッドと RevertMerge メソッドをコードで呼び出して、手動でマージする必要があります。

自動マージ

ソース フォームをアクティブにすることで、MDI アプリケーションの自動マージを使用できます。MDI アプリケーションの MenuStrip を使用するには、MainMenuStrip プロパティをターゲットの MenuStrip に設定します。これは、ソースの MenuStrip で実行するマージ処理が、ターゲットの MenuStrip に反映されるようにするためです。

MDI ソースで MenuStrip をアクティブにすることで、自動マージをトリガできます。アクティブになると、ソース MenuStrip は MDI のターゲットにマージされます。新しいフォームがアクティブになると、前のフォームではマージが元の状態に戻り、新しいフォームでマージがトリガされます。この動作は、必要に応じて各 ToolStripItemMergeAction プロパティを設定する方法、および各 MenuStripAllowMerge プロパティを設定する方法で制御できます。

参照

処理手順

方法 : MenuStrip を使用して MDI ウィンドウの一覧を作成する (Windows フォーム)

方法 : MDI アプリケーションでメニューの自動マージを設定する

参照

ToolStripManager

MenuStrip

その他の技術情報

MenuStrip コントロール (Windows フォーム)