示例#1
0
        internal void OnMouseDown(MouseEventArgs e)
        {
            // Get the mouse coordinate relative to the control
            int y = e.Y + SystemInformation.MenuHeight;
            // Search the main menu
            int item = ItemFromPoint(new Point(e.X, y));

            if (item != -1)
            {
                MenuItem menuItem = ItemSelected(item);
                if (menuItem.MenuItems.Count == 0)
                {
                    clicked = false;
                    menuItem.PerformClick();
                }
                else
                {
                    clicked = true;
                }
            }
            else
            {
                // We have clicked outside of any menus that are up so pop down all menus.
                if (menuPopup != null)
                {
                    menuPopup.PopDown();
                    clicked = false;
                }
            }
        }
示例#2
0
        private MenuItem ItemSelected(int item)
        {
            MenuItem menuItem = MenuItems[item];

            // Remove any currently "popped up" child menus.
            if (nextPopupMenu != null)
            {
                nextPopupMenu.PopDown();
                nextPopupMenu = null;
            }
            // If there are sub menus then show the next child menu.
            if (menuItem.MenuItems.Count > 0)
            {
                nextPopupMenu = new ContextMenu(menuItem.itemList);
                Point location = new Point(itemBounds[item].Right + 1, itemBounds[item].Y - 1);
                location = popupControl.PointToScreen(location);
                location = associatedControl.PointToClient(location);

                nextPopupMenu.MouseMove += new MouseEventHandler(nextPopupMenu_MouseMove);
                nextPopupMenu.MouseDown += new MouseEventHandler(nextPopupMenu_MouseDown);
                nextPopupMenu.Show(associatedControl, location);
            }
            return(menuItem);
        }