0% found this document useful (0 votes)
70 views4 pages

How To - Create MDI Child Forms - Microsoft Docs

This document provides steps to create MDI child forms in a Windows Forms application. It describes designating the main form as an MDI container, adding menu items to open new child forms, creating a child form template, and writing code to instantiate and display new child forms when the menu item is clicked. The child forms will be tracked in the application's Window menu.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
70 views4 pages

How To - Create MDI Child Forms - Microsoft Docs

This document provides steps to create MDI child forms in a Windows Forms application. It describes designating the main form as an MDI container, adding menu items to open new child forms, creating a child form template, and writing code to instantiate and display new child forms when the menu item is clicked. The child forms will be tracked in the application's Window menu.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

How to: Create MDI Child Forms

2017-3-30 4 min to read Contributors

In this article
See Also

MDI child forms are an essential element of Multiple-Document Interface


(MDI) Applications, as these forms are the center of user interaction.

In the following procedure, you will create MDI child form that displays a
RichTextBox control, similar to most word-processing applications.
Substituting the System.Windows.Forms control with other controls, such as
the DataGridView control, or a mixture of controls enables you to create MDI
child windows (and, by extension, MDI applications) with diverse possibilities.

Note

The dialog boxes and menu commands you see might differ from those described
in Help depending on your active settings or edition. To change your settings,
choose Import and Export Settings on the Tools menu. For more information, see
Customizing Development Settings in Visual Studio.

To create MDI child forms

1. Create a new Windows Forms project. In the Properties Windows for


the form, set its IsMdiContainer property to true , and its
WindowsState property to Maximized .

This designates the form as an MDI container for child windows.

2. From the Toolbox , drag a MenuStrip control to the form. Set its
Text property to File.
3. Click the ellipses () next to the Items property, and click Add to add
two child tool strip menu items. Set the Text property for these
items to New and Window.

4. In Solution Explorer, right-click the project, point to Add, and then


select Add New Item.

5. In the Add New Item dialog box, select Windows Form (in Visual
Basic or in Visual C#) or Windows Forms Application (.NET) (in
Visual C++) from the Templates pane. In the Name box, name the
form Form2. Click the Open button to add the form to the project.

Note

The MDI child form you created in this step is a standard Windows Form. As
such, it has an Opacity property, which enables you to control the
transparency of the form. However, the Opacity property was designed for
top-level windows. Do not use it with MDI child forms, as painting
problems can occur.

This form will be the template for your MDI child forms.

The Windows Forms Designer opens, displaying Form2.

6. From the Toolbox, drag a RichTextBox control to the form.

7. In the Properties window, set the Anchor property to Top, Left and
the Dock property to Fill.

This causes the RichTextBox control to completely fill the area of the
MDI child form, even when the form is resized.

8. Double click the New menu item to create a Click event handler for it.
9. Insert code similar to the following to create a new MDI child form
when the user clicks the New menu item.

Note

In the following example, the event handler handles the Click event for
MenuItem2 . Be aware that, depending on the specifics of your application
architecture, your New menu item may not be MenuItem2 .

VB Copy

Protected Sub MDIChildNew_Click(ByVal sender As System.Object, ByVal


Dim NewMDIChild As New Form2()
'Set the Parent Form of the Child window.
NewMDIChild.MdiParent = Me
'Display the new form.
NewMDIChild.Show()
End Sub

C# Copy

protected void MDIChildNew_Click(object sender, System.EventArgs e


Form2 newMDIChild = new Form2();
// Set the Parent Form of the Child window.
newMDIChild.MdiParent = this;
// Display the new form.
newMDIChild.Show();
}

C++ Copy

private:
void menuItem2_Click(System::Object ^ sender,
System::EventArgs ^ e)
{
Form2^ newMDIChild = gcnew Form2();
// Set the Parent Form of the Child window.
newMDIChild->MdiParent = this;
// Display the new form.
newMDIChild->Show();
}
In Visual C++, add the following #include directive at the top of
Form1.h:

C++ Copy

#include "Form2.h"

10. In the drop-down list at the top of the Properties window, select the
menu strip that corresponds to the File menu strip and set the
MdiWindowListItem property to the Window ToolStripMenuItem.

This will enable the Window menu to maintain a list of open MDI
child windows with a check mark next to the active child window.

11. Press F5 to run the application. By selecting New from the File menu,
you can create new MDI child forms, which are kept track of in the
Window menu item.

Note

When an MDI child form has a MainMenu component (with, usually, a


menu structure of menu items) and it is opened within an MDI parent form
that has a MainMenu component (with, usually, a menu structure of menu
items), the menu items will merge automatically if you have set the
MergeType property (and optionally, the MergeOrder property). Set the
MergeType property of both MainMenu components and all of the menu
items of the child form to MergeItems. Additionally, set the MergeOrder
property so that the menu items from both menus appear in the desired
order. Moreover, keep in mind that when you close an MDI parent form,
each of the MDI child forms raises a Closing event before the Closing event
for the MDI parent is raised. Canceling an MDI child's Closing event will not
prevent the MDI parent's Closing event from being raised; however, the
CancelEventArgs argument for the MDI parent's Closing event will now be
set to true . You can force the MDI parent and all MDI child forms to close
by setting the CancelEventArgs argument to false .

See Also

You might also like