class Form3 : Form
{
private ContextMenuStrip fruitContextMenuStrip;
public Form3()
{
// new ContextMenuStrip
fruitContextMenuStrip = new ContextMenuStrip();
// sync opening event
fruitContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(cms_Opening);
// new ToolStrip
ToolStrip ts = new ToolStrip();
ToolStripDropDownButton fruitToolStripDropDownButton = new ToolStripDropDownButton("Fruit", null, null, "Fruit");
ts.Items.Add(fruitToolStripDropDownButton);
ts.Dock = DockStyle.Top;
// wire up DropDownItem DropDown
fruitToolStripDropDownButton.DropDown = fruitContextMenuStrip;
// new MenuStrip
MenuStrip ms = new MenuStrip();
ToolStripMenuItem fruitToolStripMenuItem = new ToolStripMenuItem("Fruit", null, null, "Fruit");
ms.Items.Add(fruitToolStripMenuItem);
ms.Dock = DockStyle.Top;
// wire up ToolStripMenuItem DropDown
fruitToolStripMenuItem.DropDown = fruitContextMenuStrip;
// wire up Form ContextMenuStrip
this.ContextMenuStrip = fruitContextMenuStrip;
// Add the toolstrip to the controls collection
this.Controls.Add(ts);
// add menustrip to the controls collection last - Z order!
this.Controls.Add(ms);
}
void cms_Opening(object sender, System.ComponentModel.CancelEventArgs e)
{
// grab owners
Control c = fruitContextMenuStrip.SourceControl as Control;
ToolStripDropDownItem tsi = fruitContextMenuStrip.OwnerItem as ToolStripDropDownItem;
// clear collection
fruitContextMenuStrip.Items.Clear();
// check source control first
if (c != null)
{
// Add custom item (Form)
fruitContextMenuStrip.Items.Add("Source: " + c.GetType().ToString());
}
else if (tsi != null)
{
// Add custom item (ToolStripDropDownButton or ToolStripMenuItem)
fruitContextMenuStrip.Items.Add("Source: " + tsi.GetType().ToString());
}
// add default items
fruitContextMenuStrip.Items.Add("-");
fruitContextMenuStrip.Items.Add("Apples");
fruitContextMenuStrip.Items.Add("Oranges");
fruitContextMenuStrip.Items.Add("Pears");
// set cancel to false (optimized to true based on empty entry)
e.Cancel = false;
}
}