Welcome to WindowsClient.net | Sign in | Join

Here are some frequently asked questions about Windows Forms and their answers.

Windows Forms FAQs

How can I use the ContextMenuStrip?

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;

  }
 }