Procedura: creare un form MDI con controlli ToolStripPanel
Aggiornamento: novembre 2007
È possibile creare un form MDI (Multiple Document Interface, interfaccia a documenti multipli) racchiuso tra controlli ToolStrip disposti su tutti i lati.
Esempio
Nell'esempio di codice riportato di seguito viene illustrato come utilizzare controlli ToolStripPanel ancorati per racchiudere una finestra MDI tra quattro controlli ToolStrip.
Nell'esempio, il metodo Join associa i controlli ToolStrip ai controlli ToolStripPanel corrispondenti.
Imports System
Imports System.Collections.Generic
Imports System.Windows.Forms
Imports System.Drawing
...
' This code example demonstrates how to use ToolStripPanel
' controls with a multiple document interface (MDI).
Public Class Form1
Inherits Form
Public Sub New()
' Make the Form an MDI parent.
Me.IsMdiContainer = True
' Create ToolStripPanel controls.
Dim tspTop As New ToolStripPanel()
Dim tspBottom As New ToolStripPanel()
Dim tspLeft As New ToolStripPanel()
Dim tspRight As New ToolStripPanel()
' Dock the ToolStripPanel controls to the edges of the form.
tspTop.Dock = DockStyle.Top
tspBottom.Dock = DockStyle.Bottom
tspLeft.Dock = DockStyle.Left
tspRight.Dock = DockStyle.Right
' Create ToolStrip controls to move among the
' ToolStripPanel controls.
' Create the "Top" ToolStrip control and add
' to the corresponding ToolStripPanel.
Dim tsTop As New ToolStrip()
tsTop.Items.Add("Top")
tspTop.Join(tsTop)
' Create the "Bottom" ToolStrip control and add
' to the corresponding ToolStripPanel.
Dim tsBottom As New ToolStrip()
tsBottom.Items.Add("Bottom")
tspBottom.Join(tsBottom)
' Create the "Right" ToolStrip control and add
' to the corresponding ToolStripPanel.
Dim tsRight As New ToolStrip()
tsRight.Items.Add("Right")
tspRight.Join(tsRight)
' Create the "Left" ToolStrip control and add
' to the corresponding ToolStripPanel.
Dim tsLeft As New ToolStrip()
tsLeft.Items.Add("Left")
tspLeft.Join(tsLeft)
' Create a MenuStrip control with a new window.
Dim ms As New MenuStrip()
Dim windowMenu As New ToolStripMenuItem("Window")
Dim windowNewMenu As New ToolStripMenuItem("New", Nothing, New EventHandler(AddressOf windowNewMenu_Click))
windowMenu.DropDownItems.Add(windowNewMenu)
CType(windowMenu.DropDown, ToolStripDropDownMenu).ShowImageMargin = False
CType(windowMenu.DropDown, ToolStripDropDownMenu).ShowCheckMargin = True
' Assign the ToolStripMenuItem that displays
' the list of child forms.
ms.MdiWindowListItem = windowMenu
' Add the window ToolStripMenuItem to the MenuStrip.
ms.Items.Add(windowMenu)
' Dock the MenuStrip to the top of the form.
ms.Dock = DockStyle.Top
' The Form.MainMenuStrip property determines the merge target.
Me.MainMenuStrip = ms
' Add the ToolStripPanels to the form in reverse order.
Me.Controls.Add(tspRight)
Me.Controls.Add(tspLeft)
Me.Controls.Add(tspBottom)
Me.Controls.Add(tspTop)
' Add the MenuStrip last.
' This is important for correct placement in the z-order.
Me.Controls.Add(ms)
End Sub
' This event handler is invoked when
' the "New" ToolStripMenuItem is clicked.
' It creates a new Form and sets its MdiParent
' property to the main form.
Private Sub windowNewMenu_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim f As New Form()
f.MdiParent = Me
f.Text = "Form - " + Me.MdiChildren.Length.ToString()
f.Show()
End Sub
End Class
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
...
// This code example demonstrates how to use ToolStripPanel
// controls with a multiple document interface (MDI).
public class Form1 : Form
{
public Form1()
{
// Make the Form an MDI parent.
this.IsMdiContainer = true;
// Create ToolStripPanel controls.
ToolStripPanel tspTop = new ToolStripPanel();
ToolStripPanel tspBottom = new ToolStripPanel();
ToolStripPanel tspLeft = new ToolStripPanel();
ToolStripPanel tspRight = new ToolStripPanel();
// Dock the ToolStripPanel controls to the edges of the form.
tspTop.Dock = DockStyle.Top;
tspBottom.Dock = DockStyle.Bottom;
tspLeft.Dock = DockStyle.Left;
tspRight.Dock = DockStyle.Right;
// Create ToolStrip controls to move among the
// ToolStripPanel controls.
// Create the "Top" ToolStrip control and add
// to the corresponding ToolStripPanel.
ToolStrip tsTop = new ToolStrip();
tsTop.Items.Add("Top");
tspTop.Join(tsTop);
// Create the "Bottom" ToolStrip control and add
// to the corresponding ToolStripPanel.
ToolStrip tsBottom = new ToolStrip();
tsBottom.Items.Add("Bottom");
tspBottom.Join(tsBottom);
// Create the "Right" ToolStrip control and add
// to the corresponding ToolStripPanel.
ToolStrip tsRight = new ToolStrip();
tsRight.Items.Add("Right");
tspRight.Join(tsRight);
// Create the "Left" ToolStrip control and add
// to the corresponding ToolStripPanel.
ToolStrip tsLeft = new ToolStrip();
tsLeft.Items.Add("Left");
tspLeft.Join(tsLeft);
// Create a MenuStrip control with a new window.
MenuStrip ms = new MenuStrip();
ToolStripMenuItem windowMenu = new ToolStripMenuItem("Window");
ToolStripMenuItem windowNewMenu = new ToolStripMenuItem("New", null, new EventHandler(windowNewMenu_Click));
windowMenu.DropDownItems.Add(windowNewMenu);
((ToolStripDropDownMenu)(windowMenu.DropDown)).ShowImageMargin = false;
((ToolStripDropDownMenu)(windowMenu.DropDown)).ShowCheckMargin = true;
// Assign the ToolStripMenuItem that displays
// the list of child forms.
ms.MdiWindowListItem = windowMenu;
// Add the window ToolStripMenuItem to the MenuStrip.
ms.Items.Add(windowMenu);
// Dock the MenuStrip to the top of the form.
ms.Dock = DockStyle.Top;
// The Form.MainMenuStrip property determines the merge target.
this.MainMenuStrip = ms;
// Add the ToolStripPanels to the form in reverse order.
this.Controls.Add(tspRight);
this.Controls.Add(tspLeft);
this.Controls.Add(tspBottom);
this.Controls.Add(tspTop);
// Add the MenuStrip last.
// This is important for correct placement in the z-order.
this.Controls.Add(ms);
}
// This event handler is invoked when
// the "New" ToolStripMenuItem is clicked.
// It creates a new Form and sets its MdiParent
// property to the main form.
void windowNewMenu_Click(object sender, EventArgs e)
{
Form f = new Form();
f.MdiParent = this;
f.Text = "Form - " + this.MdiChildren.Length.ToString();
f.Show();
}
}
Compilazione del codice
Per questo esempio sono necessari i seguenti requisiti:
- Riferimenti agli assembly System.Drawing e System.Windows.Forms.
Per informazioni sulla generazione di questo esempio dalla riga di comando per Visual Basic o Visual C#, vedere Compilazione dalla riga di comando (Visual Basic) o Compilazione dalla riga di comando con csc.exe. È anche possibile generare questo esempio in Visual Studio incollando il codice in un nuovo progetto.