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 の値 |
説明 |
一般的な用途 |
---|---|---|
(既定) ターゲット項目のコレクションの末尾にソース項目を追加します。 |
プログラムの一部がアクティブな場合、メニューの末尾にメニュー項目を追加します。 |
|
ターゲット項目のコレクションのうち、ソース項目に設定された MergeIndex プロパティに相当する場所にソース項目を追加します。 |
プログラムの一部がアクティブな場合、メニューの中間または先頭にメニュー項目を追加します。 MergeIndex 値がどちらのメニュー項目でも同じ場合、逆順で追加します。元の順序を維持するには、MergeIndex を適切に設定します。 |
|
一致するテキストを検索します。一致するテキストが見つからない場合は MergeIndex 値を使用します。次に、この一致するターゲット メニュー項目をソース メニュー項目で置換します。 |
ターゲット メニュー項目を、名前は同じで何かが異なるソース メニュー項目で置換します。 |
|
一致するテキストを検索します。一致するテキストが見つからない場合は MergeIndex 値を使用します。次に、ソースのすべてのドロップダウン項目をターゲットに追加します。 |
メニュー項目をサブメニューに挿入または追加したり、メニュー項目をサブメニューから削除したりするメニュー構造を構築します。たとえば、MDI 子フォームのメニュー項目をメインの MenuStrip の [名前を付けて保存] メニューに追加できます。 MatchOnly を使用すると、処理を実行しなくてもメニュー構造内を検索できます。これは、以降の項目を評価する 1 つの方法です。 |
|
一致するテキストを検索します。一致するテキストが見つからない場合は MergeIndex 値を使用します。次に、ターゲットから項目を削除します。 |
ターゲットの MenuStrip からメニュー項目を削除します。 |
手動マージ
MenuStrip コントロールのみが自動マージに参加します。ToolStrip や StatusStrip など、他のコントロールの項目を結合するには、必要に応じて Merge メソッドと RevertMerge メソッドをコードで呼び出して、手動でマージする必要があります。
自動マージ
ソース フォームをアクティブにすることで、MDI アプリケーションの自動マージを使用できます。MDI アプリケーションの MenuStrip を使用するには、MainMenuStrip プロパティをターゲットの MenuStrip に設定します。これは、ソースの MenuStrip で実行するマージ処理が、ターゲットの MenuStrip に反映されるようにするためです。
MDI ソースで MenuStrip をアクティブにすることで、自動マージをトリガできます。アクティブになると、ソース MenuStrip は MDI のターゲットにマージされます。新しいフォームがアクティブになると、前のフォームではマージが元の状態に戻り、新しいフォームでマージがトリガされます。この動作は、必要に応じて各 ToolStripItem で MergeAction プロパティを設定する方法、および各 MenuStrip で AllowMerge プロパティを設定する方法で制御できます。
参照
処理手順
方法 : MenuStrip を使用して MDI ウィンドウの一覧を作成する (Windows フォーム)
方法 : MDI アプリケーションでメニューの自動マージを設定する