65.9K
CodeProject is changing. Read more.
Home

Magic MenuControl - VS.NET Style

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.83/5 (40 votes)

Sep 30, 2002

2 min read

viewsIcon

344185

downloadIcon

1702

Menus that mimic VS.NET/OfficeXP

Sample Image - MagicMenuControl.gif

Why another MenuControl?

The .NET Framework contains a wide range of user interface controls, but they offer only a basic look and feel. Today's user expects a richer experience that you just cannot build with the out-of-the-box controls. The Magic Library (of which this MenuControl is a major part) aims to solve this by providing a set of user interface elements that add the sophistication expected from modern Windows applications.

Downloads

The first download MenuControl Sample contains a example application that uses shows the MenuControl from the Magic Library. This allows you to experiment and test out the feature. The actual source code is inside the separate second download. At nearly 1MB in size, I thought people would prefer to download the sample before deciding if they want to install the entire source code project!

Description

The usual way to create a menu for your application is via the Menu property of your applications main Form. Unfortunately this gives a very basic look and feel and does not support the new Visual Studio .NET appearance.

This is where the MenuControl class comes into its own as it closely mimics the Visual Studio .NET look and feel. Not only that, but you can create as many instances as you like and place them anywhere on your Form. You can even use the Dock property to place the control against the left/right and bottom edges as well as the traditional top position. When placed on the left or right edges it will draw the menu items vertically.

When using the control within an MDI application it is important that exactly one instance of the MenuControl uses the MdiContainer property. This property should be given a reference to the MDI parent Form so that it can correctly display the pendant for MDI child Forms .

MenuCommand Instances

The control exposes a property called MenuCommands that contains the collection of MenuCommand instances for display. You cannot use the builtin menu designer to generate the instances and so will need to use code to create the structure you need. Look at the sample code to see how this is done.

PopupMenu

Also demonstrated in the sample is use of the PopupMenu class that can be seen by right clicking the RichTextBox present inside each MDI child instance. This shows how to create a context menu using the VS.NET/OfficeXP look and feel. It uses the same MenuCommand instances as the MenuControl.

More Details

Download and install the Magic Libary where a couple of more detailed artiles describe how all the various features of the MenuControl and PopupMenu work.

Revision History

30 Sept 2002 - Initial Revision