Welcome to Dream.In.Code
Become a C# Expert!

Join 136,880 C# Programmers for FREE! Get instant access to thousands of C# experts, tutorials, code snippets, and more! There are 1,734 people online right now. Registration is fast and FREE... Join Now!




Using MDI in C#

 
Reply to this topicStart new topic

> Using MDI in C#, How to create a MDI application using C# and WinForms.

PixelCard
Group Icon



post 15 Jul, 2008 - 05:19 AM
Post #1


In this tutorial I will explain what is MDI and how to use it in C#.

MDI (Multiple Document Interface) is a type of GUI (Graphical User Interface), which presents a single parent (container) window for other windows in a specific application. The opposites of MDI are SDI (Single Document Interface) and TDI (Tabbed Document Interface).

The main advantages of MDI are:
  • Child windows are easily managed from a single parent (container) form.
  • A single menu and toolbar can be shared for other windows.
  • The possibility to work with multiple documents in one window of the same application.
  • Closing the parent (container) window, the user closes other child windows.

Special Tutorial Requirements:
  • C# IDE (Visual Studio 2008 used in this tutorial)
  • .NET Framework 1.0

So, let's start creating an MDI application.

1. Create a standard C# Windows Forms Application:

IPB Image

2. First of all I have to create a container form. The first form that was created by default can become a container just by changing the IsMdiContainer property to True:

IPB Image

Now, the form should look like this:

IPB Image

3. Now, I will add a new form to the project. It will be a child form. To add a new form, use the Add New Item button on the IDE toolbar (if you use Visual Studio). Select the Add Windows Form... option from the dropdown menu:

IPB Image

4. Now, when a new form is created, I need to call it from the parent form, so I will create a menu on the first form, using the MenuStrip control:

IPB Image

5. To the newly created menu I will add a root element (I will call it "Container") and a child element (called "New Child..."):

IPB Image

6. Now, to open a new child in the parent form, add this code to the "New Child..." menu item:

csharp

// Declare the child form as a new one.
Form2 childForm = new Form2();
// Set the main form as a parent form.
childForm.MdiParent = this;
// Show the child form.
childForm.Show();


Now, if you compile the application and click several times on the "New Child..." menu item, you will get new child forms inside the parent form:

IPB Image

7. Now, I will add some additional menu items, that will have the functionality needed to arrange the child forms inside the parent form.

Basically, there are four types of arrangement:
  • Cascade
  • Tile Horizontal
  • Tile Vertical
  • Arrange Icons

So, add the new menu items (as in the image below):

IPB Image

Here goes the code for all the types of arrangements (add this code to the corresponding menu items):

Cascade

csharp

// Set the layout to cascade.
this.LayoutMdi(MdiLayout.Cascade);


Screenshot:

IPB Image

Tile Horizontal

csharp

// Set the layout to tile horizontal.
this.LayoutMdi(MdiLayout.TileHorizontal);


Screenshot:

IPB Image

Tile Vertical

csharp

// Set the layout to tile vertical.
this.LayoutMdi(MdiLayout.TileVertical);


Screenshot:

IPB Image

Arrange Icons

csharp

// Set the layout to arrange icons.
this.LayoutMdi(MdiLayout.ArrangeIcons);


Screenshot:

IPB Image

Note: the ArrangeIcons layout is available only for minimized child forms.

8. Now, if the user opens many child forms, it becomes harder to navigate between them, so I will set the MdiWindowListItem of the menu strip to windowToolStripMenuItem, so all opened child windows will be listed in the Window menu:

IPB Image

As the application starts and child windows are open, these are listed in the Window menu:

IPB Image

Now I can easily switch between all opened child windows.

This tutorial shows only the basics of creating a MDI application, but it also shows some fundamental MDI ideas and implementations.


Attached File(s)
Attached File  usingMDI.zip ( 39.97k ) Number of downloads: 203
Go to the top of the page
+Quote Post


Register to Make This Ad Go Away!


Fast ReplyReply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 12/3/08 08:31PM

Live C# Help!

C# Tutorials

Reference Sheets

C# Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month