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; } } }
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); }