示例#1
0
        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);
                };
            }
        }