Menustrips

G

Guest

How do I insert a MDI child menustrip without any matches within the parent
menustrip so that the entire top level child menustrip comes after a
specified top level parent menu item. For example inserting the child
menustrip after a menuitem "View" on the parent and before "Windows" and
"Help". This was easy with MainMenu and Menuitems but I can't get this to
work with Menustrips. Appreciate any help.
 
J

Jeffrey Tan[MSFT]

Hi teplick,

Thanks for your post.

Currently, I do not think I understand you very well.

Based on your post, you should be using VS.net2005 for winform programming.
However, in VS.net2005, it seems that there are no MainMenu and Menuitems,
why do you say that: "This was easy with MainMenu and Menuitems but I can't
get this to work with Menustrips"?

Also, I do not think a menustrip can be added in the Items property of
another MenuStrip, because MenuStrip.Items property is of type
ToolStripItemCollection, which contain MenuStrip as an item. So I do not
know how you " inserting the child menustrip after a menuitem "View" on the
parent and before "Windows" and "Help"".

Can you give us some clarify on these? Thanks
=====================================================
Thank you for your patience and cooperation. If you have any questions or
concerns, please feel free to post it in the group. I am standing by to be
of assistance.

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
 
G

Guest

"Jeffrey Tan[MSFT]" said:
Hi teplick,

Thanks for your post.

Currently, I do not think I understand you very well.

Based on your post, you should be using VS.net2005 for winform programming.
However, in VS.net2005, it seems that there are no MainMenu and Menuitems,
why do you say that: "This was easy with MainMenu and Menuitems but I can't
get this to work with Menustrips"?

Also, I do not think a menustrip can be added in the Items property of
another MenuStrip, because MenuStrip.Items property is of type
ToolStripItemCollection, which contain MenuStrip as an item. So I do not
know how you " inserting the child menustrip after a menuitem "View" on the
parent and before "Windows" and "Help"".

Can you give us some clarify on these? Thanks
=====================================================
Thank you for your patience and cooperation. If you have any questions or
concerns, please feel free to post it in the group. I am standing by to be
of assistance.

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

Jeffrey
I am using VS2005B2 and Mainmenu and Menuitems can be added to the toolbox
but since they are going to be obsolete, I am trying not to use to use them.
Perhaps this will clarify my ? I want to merge a MDI child menustrip without
any matches within the parent menustrip so that the entire top level child
menustrip comes between
specified top level MDI container parent menu items. For example, when I
instantiate the child, it should insert its menustrip between menuitem "View"
and before menuitem "Windows"on the parent.

That is:
MDI container parent menuitem something like: File View Windows help
Child menustrip: cmd1 cmd2 cmd3

When MDI child is instantiated menu should be
File View Cmd1 Cmd2 Cmd3 Windows Help

As mentioned, this is easy with Mainmenu and Menuitems I can't get this to
occur with Menustrips. If this cannot be done using Menustrips, does this
mean that Mainmenu and Menuitems must still be used for MDI applications
Thanks for your help,
Dick
 
J

Jeffrey Tan[MSFT]

Hi Dick,

Thanks for your feedback.

Yes, the MenuStrip customize merge behavior is changed in Whidbey. We
should set MergeType=Insert(Instead of Append) with certain MergeIndex to
get what you want. If we changed to use MergeType=Insert, everything should
work now(at least work in my test).

Actually, this break behavior is reported by other customers, for more
information please refer to:
"Bug Details: MDI Menu merge still broken in beta 2"
http://lab.msdn.microsoft.com/ProductFeedback/viewFeedback.aspx?feedbackid=9
650cc62-3084-4822-8290-a8a1ca7483a2

Hope this helps
=============================================
Thank you for your patience and cooperation. If you have any questions or
concerns, please feel free to post it in the group. I am standing by to be
of assistance.

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
 
G

Guest

Jeffrey,
I had tried all of that but can't get it to work. The URL you sent is a
different problem. It merges submenus whereas I want to insert top level
menuitems between parent top level items. Would you send me the code that
you used that worked please so I may see how to do this.
Thanks
Dick
 
J

Jeffrey Tan[MSFT]

Hi Dick,

Thanks for your feedback.

I do not think I understand you very well. As you said, we can easily do
this in VS.net 2003, so can you provide us a VS.net2003 sample about the
feature you need? Then I think I can understand your meaning much better.
Thanks for your understanding.

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
 
G

Guest

"Jeffrey Tan[MSFT]" said:
Hi Dick,

Thanks for your feedback.

I do not think I understand you very well. As you said, we can easily do
this in VS.net 2003, so can you provide us a VS.net2003 sample about the
feature you need? Then I think I can understand your meaning much better.
Thanks for your understanding.

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

I would send you a zip file of the following simple example but I don't know
how to attach a file to a message so here's the essence of the code. When
you click on File, Open Child in the Mainform, cmd1 and cmd2 are inserted
after View and before Window on the parent form. I cannot duplicate this
insertion using Menustrips.
Appreciate your ongoing help

MainForm (MdiContainer)

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace MergeMdiMenus
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class MdiParent : System.Windows.Forms.Form
{
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
private System.Windows.Forms.MenuItem menuItem3;
private System.Windows.Forms.MenuItem menuItem4;
private System.Windows.Forms.MenuItem menuItem5;
private System.Windows.Forms.MenuItem menuItem6;
private System.Windows.Forms.MenuItem menuItem7;
private System.Windows.Forms.MenuItem menuItem8;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public MdiParent()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.menuItem3 = new System.Windows.Forms.MenuItem();
this.menuItem4 = new System.Windows.Forms.MenuItem();
this.menuItem5 = new System.Windows.Forms.MenuItem();
this.menuItem6 = new System.Windows.Forms.MenuItem();
this.menuItem7 = new System.Windows.Forms.MenuItem();
this.menuItem8 = new System.Windows.Forms.MenuItem();
//
// mainMenu1
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1,
this.menuItem5,
this.menuItem6,
this.menuItem7});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem8,
this.menuItem2,
this.menuItem3,
this.menuItem4});
this.menuItem1.Text = "&File";
//
// menuItem2
//
this.menuItem2.Index = 1;
this.menuItem2.Text = "&New";
//
// menuItem3
//
this.menuItem3.Index = 2;
this.menuItem3.Text = "&Save";
//
// menuItem4
//
this.menuItem4.Index = 3;
this.menuItem4.Text = "&Exit";
//
// menuItem5
//
this.menuItem5.Index = 1;
this.menuItem5.Text = "&View";
//
// menuItem6
//
this.menuItem6.Index = 2;
this.menuItem6.MdiList = true;
this.menuItem6.MergeOrder = 1;
this.menuItem6.Text = "&Window";
//
// menuItem7
//
this.menuItem7.Index = 3;
this.menuItem7.MergeOrder = 2;
this.menuItem7.Text = "&Help";
//
// menuItem8
//
this.menuItem8.Index = 0;
this.menuItem8.Text = "&Open Child";
this.menuItem8.Click += new System.EventHandler(this.menuItem8_Click);
//
// MdiParent
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 15);
this.ClientSize = new System.Drawing.Size(966, 508);
this.IsMdiContainer = true;
this.Menu = this.mainMenu1;
this.Name = "MdiParent";
this.Text = "MdiParent";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

}
#endregion

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new MdiParent());
}

private void menuItem8_Click(object sender, System.EventArgs e)
{
MdiChild newChild = new MdiChild();
newChild.MdiParent = this;
newChild.Show();
}
}
}

Child Form
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace MergeMdiMenus
{
/// <summary>
/// Summary description for MdiChild.
/// </summary>
public class MdiChild : System.Windows.Forms.Form
{
private System.Windows.Forms.MainMenu childMenu;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public MdiChild()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.childMenu = new System.Windows.Forms.MainMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
//
// childMenu
//
this.childMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1,
this.menuItem2});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.Text = "Cmd1";
//
// menuItem2
//
this.menuItem2.Index = 1;
this.menuItem2.Text = "Cmd2";
//
// MdiChild
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 15);
this.ClientSize = new System.Drawing.Size(734, 428);
this.Menu = this.childMenu;
this.Name = "MdiChild";
this.Text = "MdiChild";

}
#endregion
}
}
 
J

Jeffrey Tan[MSFT]

Hi teplick,

Have you received my sample project, is your problem resolved? Please feel
free to tell me, thanks

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top