一部のアプリケーションでは、マルチドキュメント インターフェイス (MDI) 子ウィンドウの種類が MDI 親ウィンドウとは異なる場合があります。 たとえば、MDI 親がスプレッドシートで、MDI 子がグラフである場合があります。 その場合、MDI 子メニューの内容を MDI 子メニューの内容に更新して、さまざまな種類の MDI 子ウィンドウがアクティブ化されるようにする必要があります。
次の手順では、 IsMdiContainer、 AllowMerge、 MergeAction、および MergeIndex プロパティを使用して、MDI 親メニューのドロップダウン部分からメニュー項目を削除します。 MDI 子ウィンドウを閉じると、削除されたメニュー項目が MDI 親メニューに復元されます。
MDI ドロップダウン メニューから MenuStrip を削除するには
フォームを作成し、その IsMdiContainer プロパティを
trueに設定します。MenuStrip に
Form1を追加し、AllowMerge の MenuStrip プロパティをtrueに設定します。&Fileメニュー項目に 3 つのサブメニュー項目を追加し、その Text プロパティを&Open、&Import from、およびE&xitに設定します。2 つのサブメニュー項目を
&Import fromサブメニュー項目に追加し、その Text プロパティを&Wordおよび&Excelに設定します。プロジェクトにフォームを追加し、フォームに MenuStrip を追加し、AllowMerge
Form2の MenuStrip プロパティをtrueに設定します。&Import fromサブメニュー項目を&FileのForm2メニューに追加し、&Wordサブメニュー項目を&Fileメニューに追加します。次の表に示すように、MergeAction メニュー項目の MergeIndex プロパティと
Form2プロパティを設定します。Form2 メニュー項目 MergeAction の値 MergeIndex の値 ファイル MatchOnly -1 からインポート MatchOnly -1 ワード [削除] -1 Form1で、Click&OpenのToolStripMenuItem イベントのイベント ハンドラーを作成します。イベント ハンドラー内で、次のコード例のようなコードを挿入して、
Form2の新しいインスタンスを作成し、Form1の MDI 子として表示します。Private Sub openToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles openToolStripMenuItem.Click Dim NewMDIChild As New Form2() 'Set the parent form of the child window. NewMDIChild.MdiParent = Me 'Display the new form. NewMDIChild.Show() End Subprivate void openToolStripMenuItem_Click(object sender, EventArgs e) { Form2 newMDIChild = new Form2(); // Set the parent form of the child window. newMDIChild.MdiParent = this; // Display the new form. newMDIChild.Show(); }次のコード例のようなコードを
&OpenToolStripMenuItem に配置して、イベント ハンドラーを登録します。Private Sub openToolStripMenuItem_Click(sender As Object, e As _ EventArgs) Handles openToolStripMenuItem.Clickthis.openToolStripMenuItem.Click += new _ System.EventHandler(this.openToolStripMenuItem_Click);
コードのコンパイル
この例では、次のものが必要です。
Form と
Form1という名前の 2 つのForm2コントロール。MenuStrip コントロールは
Form1にあり、名前はmenuStrip1です。MenuStrip コントロールはForm2にあり、名前はmenuStrip2です。System アセンブリと System.Windows.Forms アセンブリへの参照。
こちらも参照ください
- 方法: MDI 親フォーム を作成する
- 方法: MDI 子フォーム を作成する
- MenuStrip コントロールの概要
.NET Desktop feedback