Have you thought about using a Ribbon Control ? It seems to me that what you want
is functionality like that. There's a good CodeProject article on how to use a non-Microsoft Ribbon Control: [
^]. Also see: [
^]. For WPF: [
^]
In this case, I don't think you want a drop-down Menu, but a ToolStrip Control. So put, a ToolStrip Control on your Form, and add four Buttons to it.
Note: I have not used any of these Ribbon Controls.
To make a "cheap" kind-of-a-ribbon interface: I suggest that you create/design a series of Panels, one Panel for each separate top-level ToolStripMenuItem,
each of the same size, and appearance. Each panel will, of course, display Controls for the functionality you wish that specific Panel to present to the user.
For example, create Panels named: PanelFile, PanelEdit, PanelTools, PanelHelp, etc.
As you are designing, you can spread these Panels out on your Form for ease of working with them.
When you have all the Panels designed, then select them all, click F4 to get to the Properties menu, and set their Anchor properties to Left+Top+Right. Make sure that the Panel you wish the user to see when the Application starts is "on top" of all the other Panels.
I'd align all the Panels in code, but you could certainly do that manually at design time.
Now, go through your ToolStrip Buttons and double-click on each one, and in the EventHandler that is generated, put the code to bring the appropriate Panel to the front of the z-order.
So, the code in my Form might look something like this:
private Point panelInitialLocation;
private void Form2_Load(object sender, EventArgs e)
{
panelInitialLocation = new Point(0,toolStrip1.Bottom);
PanelFile.Location = panelInitialLocation;
PanelEdit.Location = panelInitialLocation;
PanelTools.Location = panelInitialLocation;
PanelHelp.Location = panelInitialLocation;
PanelFile.BringToFront();
}
private void tsBtnFile_Click(object sender, EventArgs e)
{
PanelFile.BringToFront();
}
private void tsBtnEdit_Click(object sender, EventArgs e)
{
PanelEdit.BringToFront();
}
private void tsBtnTools_Click(object sender, EventArgs e)
{
PanelTools.BringToFront();
}
private void tsBtnHelp_Click(object sender, EventArgs e)
{
PanelHelp.BringToFront();
}