Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Merge menu strip items for MDI windows

How can I merge menu items of parent form and child form with same menu name?

like image 318
fariba Avatar asked Aug 18 '10 10:08

fariba


People also ask

How do I add items to MenuStrip C#?

We can add items to a MenuStrip at design-time from Properties Window by clicking on Items Collection as you can see in Figure 4. When you click on the Collections, the String Collection Editor window will pop up where you can type strings. Each line added to this collection will become a MenuStrip item.


1 Answers

Set the MergeAction of the menu items to "MatchOnly".

Added

Because this can get a little tricky, I'll add a list of steps to make a simple example.

  • Create a new Windows Forms Application.
  • Add a new Windows Form and leave its name Form2.
  • Open Form1 designer (if not already open).
  • Click on the form and set Form1's IsMdiContainer to True.
  • Open the toolbox and add a MenuStrip to Form1.
  • In the "Type Here" box type &File
  • In the sub-item "Type Here" box type A
  • In the sub-item "Type Here" box type B
  • Your MDI container (Form1) should have a File menu with items A and B.
  • Double-click the A item to add a click handler.
  • Add new Form2 { MdiParent = this }.Show(); to the handler method.
  • Open Form2 designer.
  • Open the toolbox and add a MenuStrip to Form2.
  • Note: See below for information about the Visible property on the Form2 MenuStrip, which could be set to False at this point.
  • In the "Type Here" box type &File
  • In the sub-item "Type Here" box type C
  • Your MDI child (Form2) should have a File menu with item C.
  • Click on the File menu item and in the Properties window set MergeAction to MatchOnly.
  • Run the program.

Notice that the File menu items are A and B.

Click File -> A to create a child window.

Notice that the File menu on the container now contains A, B, and C.

Notice also that the File menu on the child is there, but has no items. This is because C was merged.

You can now set the child's MenuStrip.Visible property to False so that the child does not display a menu. It is handy to leave this as True when designing your menus so that you can verify that all the child menu items have been merged correctly (they will be gone from the child menu).

You can use the MergeIndex property to control how child items get merged into the container.

like image 122
Tergiver Avatar answered Nov 07 '22 12:11

Tergiver