示例#1
0
        /// <summary>
        /// Create a menu item and a trailing separator. The separator is only created
        /// as a flag on the menu item, the actual separator is created once all the menu
        /// items have been loaded. A separator should be included after each group of
        /// related menu items. If a separator is inserted at the last position in a menu
        /// it will automatically be deleted if no menu items follow.
        /// </summary>
        /// <param name="itemName">The menu item name.</param>
        /// <param name="itemText">The menu item text.</param>
        /// <param name="itemImage">The menu item image.</param>
        /// <param name="keys">The menu item's shortcut keys.</param>
        /// <param name="keyText">A text representation of the menu item shortcut
        /// keys if the keys are defined elsewhere.</param>
        /// <param name="onClick">The menu item's click event handler.</param>
        /// <param name="includeSeparator">If true insert a separator after the menu item.</param>
        /// <returns>The menu item.</returns>
        public static ToolStripMenuItem CreateMenuItem(
            string itemName,
            string itemText,
            Image itemImage,
            Keys keys,
            string keyText,
            EventHandler onClick,
            bool includeSeparator)
        {
            ToolStripItemTag itemTag = new ToolStripItemTag();

            itemTag.IncludeSeparator = includeSeparator;

            ToolStripMenuItem item = new ToolStripMenuItem();

            item.Name         = itemName;
            item.Text         = itemText;
            item.Tag          = itemTag;
            item.ShortcutKeys = keys;
            if (keyText != null)
            {
                item.ShortcutKeyDisplayString = keyText;
            }
            if (itemImage != null)
            {
                item.ImageTransparentColor = System.Drawing.Color.Fuchsia;
                item.Image = itemImage;
            }
            if (onClick != null)
            {
                item.Click += new EventHandler(onClick);
            }

            return(item);
        }
示例#2
0
        private void UpdateToolbarItems()
        {
            foreach (DockedToolStrip toolStrip in _dockedToolStrips.Values)
            {
                /*
                 * Go through each button in the toolbars and add a
                 * separator after every item with the 'IncludeSeparator'
                 * flag set.
                 */

                for (int i = 0; i < toolStrip.ToolStrip.Items.Count; i++)
                {
                    ToolStripItem item = toolStrip.ToolStrip.Items[i];

                    ToolStripItemTag tag = item.Tag as ToolStripItemTag;
                    if (tag != null && tag.IncludeSeparator)
                    {
                        ToolStripSeparator sep =
                            MenuTools.CreateSeparator(item.Name + "_SEP");

                        /*
                         * Toolbar separator occurs before the button.
                         */

                        int j = toolStrip.ToolStrip.Items.IndexOf(item);
                        if (j != -1)
                        {
                            toolStrip.ToolStrip.Items.Insert(j, sep);
                            i++;  // increment i to skip button
                        }
                    }
                }
            }
        }
示例#3
0
        /// <summary>
        /// Create a toolbar button with a leading separator. The separator is only created
        /// as a flag on the button, the actual separator is inserted after the entire
        /// toolbar has been assembled. The first item in a group of buttons should
        /// include a separator.
        /// </summary>
        /// <param name="itemName">The name of the button.</param>
        /// <param name="itemText">The tooltip text for the button.</param>
        /// <param name="itemImage">The button's image.</param>
        /// <param name="onClick">The button's click event handler.</param>
        /// <param name="includeSeparator">If true insert a separator before the button.</param>
        /// <returns>The button.</returns>
        public static ToolStripButton CreateToolbarButton(
            string itemName,
            string itemText,
            Image itemImage,
            EventHandler onClick,
            bool includeSeparator)
        {
            ToolStripItemTag itemTag = new ToolStripItemTag();

            itemTag.IncludeSeparator = includeSeparator;

            ToolStripButton button = new ToolStripButton();

            button.Name         = itemName;
            button.Tag          = itemTag;
            button.ToolTipText  = itemText;
            button.DisplayStyle = ToolStripItemDisplayStyle.Image;
            if (itemImage != null)
            {
                button.ImageTransparentColor = Color.Fuchsia;
                button.Image = itemImage;
            }
            if (onClick != null)
            {
                button.Click += new EventHandler(onClick);
            }

            return(button);
        }
示例#4
0
        private void UpdateMenuDropDownItems(ToolStripMenuItem menu)
        {
            for (int i = 0; i < menu.DropDownItems.Count; i++)
            {
                ToolStripItem item = menu.DropDownItems[i];

                ToolStripItemTag tag = item.Tag as ToolStripItemTag;
                if (tag != null && tag.IncludeSeparator)
                {
                    ToolStripSeparator sep =
                        MenuTools.CreateSeparator(item.Name + "_SEP");

                    int j = menu.DropDownItems.IndexOf(item);

                    /*
                     * Menu separator occurs after the menu.
                     */

                    if (j != -1)
                    {
                        menu.DropDownItems.Insert(j + 1, sep);
                        i++; // increment i to skip new item
                    }
                }

                /*
                 * If the item is a menu recurse into any submenus.
                 */

                if (item is ToolStripMenuItem)
                {
                    ToolStripMenuItem menuItem = item as ToolStripMenuItem;

                    if (menuItem.DropDownItems.Count > 0)
                    {
                        UpdateMenuDropDownItems(menuItem);
                    }
                }
            }

            /*
             * The rule is that evey menu item group should end on a
             * separator. In some cases this will mean the last item
             * is a separator so we go through each menu and remove them.
             */

            int count = menu.DropDownItems.Count;

            if (count > 0)
            {
                ToolStripItem lastItem = menu.DropDownItems[count - 1];
                if (lastItem is ToolStripSeparator)
                {
                    menu.DropDownItems.RemoveAt(count - 1);
                }
            }
        }