void AddDestinationButton(IDestination toolstripDestination) { if (toolstripDestination.isDynamic) { ToolStripSplitButton destinationButton = new ToolStripSplitButton(); //ToolStripDropDownButton destinationButton = new ToolStripDropDownButton(); destinationButton.DisplayStyle = ToolStripItemDisplayStyle.Image; destinationButton.Size = new Size(23, 22); destinationButton.Text = toolstripDestination.Description; destinationButton.Image = toolstripDestination.DisplayIcon; ToolStripMenuItem defaultItem = new ToolStripMenuItem(toolstripDestination.Description); defaultItem.Tag = toolstripDestination; defaultItem.Image = toolstripDestination.DisplayIcon; defaultItem.Click += delegate { toolstripDestination.ExportCapture(true, surface, surface.CaptureDetails); }; // The ButtonClick, this is for the icon, gets the current default item destinationButton.ButtonClick += delegate(object sender, EventArgs e) { toolstripDestination.ExportCapture(true, surface, surface.CaptureDetails); }; // Generate the entries for the drop down destinationButton.DropDownOpening += delegate(object sender, EventArgs e) { ClearItems(destinationButton.DropDownItems); destinationButton.DropDownItems.Add(defaultItem); List<IDestination> subDestinations = new List<IDestination>(); subDestinations.AddRange(toolstripDestination.DynamicDestinations()); if (subDestinations.Count > 0) { subDestinations.Sort(); foreach(IDestination subDestination in subDestinations) { IDestination closureFixedDestination = subDestination; ToolStripMenuItem destinationMenuItem = new ToolStripMenuItem(closureFixedDestination.Description); destinationMenuItem.Tag = closureFixedDestination; destinationMenuItem.Image = closureFixedDestination.DisplayIcon; destinationMenuItem.Click += delegate { closureFixedDestination.ExportCapture(true, surface, surface.CaptureDetails); }; destinationButton.DropDownItems.Add(destinationMenuItem); } } }; destinationsToolStrip.Items.Insert(destinationsToolStrip.Items.IndexOf(toolStripSeparator16), destinationButton); } else { ToolStripButton destinationButton = new ToolStripButton(); destinationsToolStrip.Items.Insert(destinationsToolStrip.Items.IndexOf(toolStripSeparator16), destinationButton); destinationButton.DisplayStyle = ToolStripItemDisplayStyle.Image; destinationButton.Size = new Size(23, 22); destinationButton.Text = toolstripDestination.Description; destinationButton.Image = toolstripDestination.DisplayIcon; destinationButton.Click += delegate(object sender, EventArgs e) { toolstripDestination.ExportCapture(true, surface, surface.CaptureDetails); }; } }