次の方法で共有


チュートリアル : メニューのマージと ToolStrip コントロールのある MDI フォームを作成する

System.Windows.Forms 名前空間は、複数のマルチ ドキュメント インターフェイス (MDI) アプリケーションをサポートし、MenuStrip コントロールは、メニューのマージをサポートします。 MDI フォームでは、ToolStrip コントロールも使用できます。

このチュートリアルでは、MDI フォームで ToolStripPanel コントロールを使用する方法について説明します。 このフォームには、メニューを子メニューとマージする機能もあります。 このチュートリアルでは、次のタスクについて説明します。

  • Windows フォーム プロジェクトの作成

  • フォームのメイン メニューを作成 (実際のメニュー名は異なります)

  • ツールボックスへの ToolStripPanel コントロールの追加

  • 子フォームの作成

  • z オーダーによる ToolStripPanel コントロールの並べ替え

すべてのタスクを完了すると、メニューのマージおよび移動可能な ToolStrip コントロールをサポートする MDI フォームが完成します。

このトピックのコードを単一のリストとしてコピーするには、「方法 : メニューのマージと ToolStrip コントロールを使用して MDI フォームを作成する」を参照してください。

注意

実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については、「設定の操作」を参照してください。

必須コンポーネント

このチュートリアルを完了するための要件は次のとおりです。

  • Visual Studio がインストールされているコンピューターで、Windows フォーム アプリケーション プロジェクトを作成および実行するための十分なアクセス許可が付与されていること。

プロジェクトの作成

最初にプロジェクトを作成し、フォームを設定します。

プロジェクトを作成するには

  1. MdiForm という名前の Windows アプリケーション プロジェクトを作成します。

    詳細については、「方法: 新しい Windows フォーム アプリケーション プロジェクトを作成する」を参照してください。

  2. Windows フォーム デザイナーで、フォームを選択します。

  3. [プロパティ] ウィンドウで、IsMdiContainer の値を true に設定します。

メイン メニューの作成

親 MDI フォームにはメイン メニューがあります。 メイン メニューには [ウィンドウ] というメニュー項目が 1 つあります。 [ウィンドウ] メニュー項目を使用して、子フォームを作成できます。 子フォームのメニュー項目は、メイン メニューにマージされます。

メイン メニューを作成するには

  1. ツールボックスから、フォームに MenuStrip コントロールをドラッグします。

  2. ToolStripMenuItemMenuStrip コントロールに追加し、[ウィンドウ] と名付けます。

  3. MenuStrip コントロールを選択します。

  4. [プロパティ] ウィンドウで、MdiWindowListItem プロパティの値を ToolStripMenuItem1 に設定します。

  5. サブ項目を [ウィンドウ] メニューに追加し、[新規作成] と名付けます。

  6. [プロパティ] ウィンドウの [イベント] をクリックします。

  7. Click イベントをダブルクリックします。

    Windows フォーム デザイナーが、Click イベントのイベント ハンドラーを生成します。

  8. イベント ハンドラー内に次のコードを挿入します。

    ' This method creates a new ChildForm instance 
    ' and attaches it to the MDI parent form.
     Private Sub newToolStripMenuItem_Click( _
     ByVal sender As Object, _
     ByVal e As EventArgs) _
     Handles newToolStripMenuItem.Click
    
         Dim f As New ChildForm()
         f.MdiParent = Me
         f.Text = "Form - " + Me.MdiChildren.Length.ToString()
         f.Show()
    
     End Sub
    
    // This method creates a new ChildForm instance 
    // and attaches it to the MDI parent form.
    private void newToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ChildForm f = new ChildForm();
        f.MdiParent = this;
        f.Text = "Form - " + this.MdiChildren.Length.ToString();
        f.Show();
    }
    

ツールボックスへの ToolStripPanel コントロールの追加

MDI フォームで MenuStrip コントロールを使用するときは、ToolStripPanel コントロールが必要です。 MDI フォームを Windows フォーム デザイナー内でビルドするために、ToolStripPanel コントロールをツールボックスに追加する必要があります。

ToolStripPanel コントロールをツールボックスに追加するには

  1. ツールボックスを開き、[すべての Windows フォーム] タブをクリックすると、使用できる Windows フォーム コントロールが表示されます。

  2. コントロールを右クリックしてショートカット メニューを開き、[アイテムの選択] をクリックします。

  3. [ツールボックス アイテムの選択] ダイアログ ボックスで、[ToolStripPanel] が表示されるまで [名前] 列をスクロールします。

  4. [ToolStripPanel] チェック ボックスをオンにし、[OK] をクリックします。

    ToolStripPanel コントロールがツールボックスに表示されます。

子フォームの作成

この手順では、別個の MenuStrip コントロールを持つ独立した子フォーム クラスを定義します。 このフォームのメニュー項目は、親フォームのメニュー項目にマージされます。

子フォームを定義するには

  1. ChildForm という名前の新規フォームをプロジェクトに追加します。

    詳細については、「方法 : プロジェクトに Windows フォームを追加する」を参照してください。

  2. ツールボックスから、子フォームに MenuStrip コントロールをドラッグします。

  3. MenuStrip コントロールのスマート タグ グリフ (スマート タグ グリフ) をクリックし、[項目の編集] を選択します。

  4. [項目コレクション エディター] ダイアログ ボックスで、ChildMenuItem という名前の新しい ToolStripMenuItem を子メニューに追加します。

    詳細については、「ToolStrip Items コレクション エディター」を参照してください。

フォームのテスト

フォームをテストするには

  1. F5 キーを押して、フォームをコンパイルおよび実行します。

  2. [ウィンドウ] メニュー項目をクリックしてメニューを開き、[新規作成] をクリックします。

    新規の子フォームが、フォームの MDI クライアント領域に作成されます。 子フォームのメニューが、メイン メニューにマージされます。

  3. 子フォームを閉じます。

    子フォームのメニューは、メイン メニューから削除されます。

  4. [新規作成] を数回クリックします。

    MenuStrip コントロールの MdiWindowListItem プロパティが割り当てられるため、複数の子フォームが自動的に [ウィンドウ] メニュー項目の下に表示されます。

ToolStrip サポートの追加

この手順では、4 つの ToolStrip コントロールを MDI 親フォームに追加します。 各 ToolStrip コントロールは ToolStripPanel コントロール内に追加され、このコントロールがフォームの端にドッキングされます。

ToolStrip コントロールを MDI 親フォームに追加するには

  1. ツールボックスから、フォームに ToolStripPanel コントロールをドラッグします。

  2. ToolStripPanel コントロールを選択した状態で、ツールボックス内の ToolStrip コントロールをダブルクリックします。

    ToolStrip コントロールが、ToolStripPanel コントロール内に作成されます。

  3. ToolStripPanel コントロールを選択します。

  4. [プロパティ] ウィンドウで、コントロールの Dock プロパティの値を Left に変更します。

    ToolStripPanel コントロールがフォームの左側、メイン メニューの下にドッキングされます。 MDI クライアント領域は、ToolStripPanel コントロールが収まるサイズに変更されます。

  5. 手順 1. ~ 4. を繰り返します。

    新しい ToolStripPanel コントロールは、フォームの上部にドッキングされます。

    ToolStripPanel コントロールはメイン メニューの下にドッキングされますが、今回は最初の ToolStripPanel コントロールの右側に配置されます。 この手順は、ToolStripPanel コントロールを適切に配置する際の z オーダーの役割をよく示しています。

  6. さらに 2 つの ToolStripPanel コントロールについて、手順 1. ~ 4. を繰り返します。

    新規の ToolStripPanel コントロールは、フォームの右側の下部にドッキングされます。

z オーダーによる ToolStripPanel コントロールの並べ替え

MDI フォームにドッキングされる ToolStripPanel コントロールの位置は、z オーダーにおけるそのコントロールの位置によって決定されます。 コントロールの z オーダーは、[ドキュメント アウトライン] ウィンドウで簡単に設定できます。

z オーダーに従って ToolStripPanel コントロールを並べ替えるには

  1. [表示] メニューの [その他のウィンドウ] をクリックし、[ドキュメント アウトライン] をクリックします。

    前の手順で使用した ToolStripPanel コントロールの順序は、標準の順序ではありません。 これは、z オーダーが正しくないためです。 [ドキュメント アウトライン] ウィンドウを使って、コントロールの z オーダーを変更します。

  2. [ドキュメント アウトライン] ウィンドウで、[ToolStripPanel4] を選択します。

  3. [ToolStripPanel4] が一覧の最後に移動するまで、下向きの矢印ボタンを繰り返しクリックします。

    [ToolStripPanel4] コントロールは、フォームの下部に、他のコントロールの下になる配置でドッキングされます。

  4. [ToolStripPanel2] を選択します。

  5. 下向き矢印ボタンを 1 度クリックして、リストで 3 番目のコントロールの位置を指定します。

    [ToolStripPanel2] コントロールは、フォームの上部に、メイン メニューの下で他のコントロールの上になる配置でドッキングされます。

  6. さまざまなコントロールを [ドキュメント アウトライン] ウィンドウで選択し、z オーダーの異なる位置に移動します。 z オーダーに従って、ドッキングされたコントロールの配置が変わることを確認してください。 Ctrl キーを押しながら Z キーを押すか、[編集] メニューの [元に戻す] をクリックすると、変更は元に戻ります。

チェックポイント

フォームをテストするには

  1. F5 キーを押して、フォームをコンパイルおよび実行します。

  2. ToolStrip コントロールのグリップをクリックし、コントロールをフォームの異なる位置へドラッグします。

    ToolStrip コントロールをある ToolStripPanel コントロールからドラッグして別のコントロールへ移動できます。

次の手順

このチュートリアルでは、ToolStrip コントロールとメニューのマージ機能を備えた MDI 親フォームを作成しました。 ToolStrip 系コントロールの用途は、他にもたくさんあります。

参照

処理手順

方法 : MDI 親フォームを作成する

方法 : MDI 子フォームを作成する

方法 : MDI ドロップダウン メニューに MenuStrip を挿入する (Windows フォーム)

参照

MenuStrip

ToolStrip

StatusStrip

その他の技術情報

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