protected virtual void OnDropDownButtonClicked(DropDownButtonClickedEventArgs e) { if (this.Controls.Count > 0) { ToolStripMenuItem menuItem = null; menuItem = new ToolStripMenuItem("Close", null, null, Keys.Control | Keys.C); menuItem.ImageScaling = ToolStripItemImageScaling.None; menuItem.Enabled = SelectedTab.IsCloseable ? true : false; if (menuItem.Enabled) { menuItem.Click += (sender, ea) => { Remove(SelectedTab); }; } e.ContextMenu.Items.Add(menuItem); menuItem = new ToolStripMenuItem("Show/Hide Tab Items", null, null, Keys.Control | Keys.M); menuItem.ImageScaling = ToolStripItemImageScaling.None; menuItem.Click += (sender, ea) => { ShowTabManager(); }; e.ContextMenu.Items.Add(menuItem); if (this.Controls.Count > 1) { e.ContextMenu.Items.Add(new ToolStripSeparator()); int n = -1; foreach (NeoTabPage tp in this.TabPages) { n++; if (!tp.Equals(SelectedTab)) { menuItem = new ToolStripMenuItem(tp.Text, null, null, n.ToString()); menuItem.ImageScaling = ToolStripItemImageScaling.None; menuItem.Enabled = tp.IsSelectable ? true : false; if (menuItem.Enabled) { menuItem.Click += (sender, ea) => { OnNavigateTabPage(Int32.Parse(((ToolStripItem)sender).Name)); }; } e.ContextMenu.Items.Add(menuItem); } } } if (DropDownButtonClicked != null) DropDownButtonClicked(this, e); e.ContextMenu.Show(e.MenuLocation); } }
protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (e.Button == System.Windows.Forms.MouseButtons.Left) { if (this.Controls.Count > 0) { int result = -1; Rectangle smartButtonRectangle; CommonObjects.ButtonState smartButtonState; GetSmartButtonHitTest(e.Location, out smartButtonRectangle, out smartButtonState, out result); switch (result) { /*** Is on the SmartCloseButton. ***/ case 0: NeoTabPage stp = this.SelectedTab; if (stp.IsCloseable) Remove(stp); break; /*** Is on the SmartDropDownButton. ***/ case 1: ContextMenuStrip dropDownMenu = new ContextMenuStrip(); Point menuLocation = PointToScreen(new Point(smartButtonRectangle.Left, smartButtonRectangle.Bottom)); using (DropDownButtonClickedEventArgs ea = new DropDownButtonClickedEventArgs(dropDownMenu, menuLocation)) { // Fire a Notification Event. OnDropDownButtonClicked(ea); } break; /*** Is not found! ***/ default: if (this.Controls.Count > 1) { int itemIndex = -1; Rectangle itemRectangle; CommonObjects.ButtonState itemState; NeoTabPage tabItem = GetHitTest(e.Location, out itemRectangle, out itemState, out itemIndex); if (tabItem != null && tabItem.IsSelectable) { bool isAvailable = true; switch (renderer.NeoTabPageItemsSide) { case TabPageLayout.Top: case TabPageLayout.Bottom: if (itemRectangle.Right >= (smartButtonRectangle.IsEmpty ? DisplayRectangle.Right : smartButtonRectangle.Left)) isAvailable = false; break; default: if (itemRectangle.Bottom >= (smartButtonRectangle.IsEmpty ? DisplayRectangle.Bottom : smartButtonRectangle.Top)) isAvailable = false; break; } if (isAvailable) { if (selectedIndex != itemIndex) { using (SelectedIndexChangingEventArgs ea = new SelectedIndexChangingEventArgs(tabItem, itemIndex)) { // Fire a Notification Event. OnSelectedIndexChanging(ea); if (!ea.Cancel) this.SelectedIndex = ea.TabPageIndex; } } else { if (!DesignMode && AllowDrop) { // Starts a drag & drop operation for currently selected tab page. BeginDragDrop(tabItem, itemRectangle, CommonObjects.ButtonState.Pressed, itemIndex); } } } } } break; } } } }