Exemple #1
0
        public async Task <bool> RemoveAllAsync(TabPage RemainingPage = null)
        {
            bool allClosed = true;

            IsBusy       = true;
            _isBusyForce = true;

            for (int i = TabPages.Count - 1; i >= 0; i--)
            {
                TabPage Page = TabPages[i];

                if (Page == RemainingPage)
                {
                    continue;
                }

                if (!NotCloseableTabs.Contains(Page.Name))
                {
                    if ((await RemoveTabAsync(Page)) == false)
                    {
                        allClosed = false;
                    }
                }
            }

            _isBusyForce = false;
            IsBusy       = false;

            if (RemainingPage != null)
            {
                SelectedTab = RemainingPage;
            }

            return(allClosed);
        }
Exemple #2
0
        /// <summary>
        /// This event is getting called when user clicks on the tab.
        /// The menu shows entries for closing tab and for quick switching.
        /// </summary>
        private void MenuOpeningEvent(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (IsBusy)
            {
                e.Cancel = true;
                return;
            }

            _hoveredPage = null;

            int items = ContextMenuStrip.Items.Count;

            for (int i = 0; i < items - menuIndexOffset; i++)
            {
                ContextMenuStrip.Items.RemoveAt(menuIndexOffset);
            }

            if (TabPages.Count > 1)
            {
                ContextMenuStrip.Items.Add(new ToolStripSeparator());
            }

            for (int i = 0; i < TabPages.Count; i++)
            {
                if (TabPages[i] != SelectedTab)
                {
                    ToolStripMenuItem item = new ToolStripMenuItem(TabPages[i].Text);

                    item.Name   = TabPages[i].Name;
                    item.Click += TabShortCut_Click;

                    if (!string.IsNullOrEmpty(TabPages[i].ImageKey))
                    {
                        item.Image = ImageList.Images[TabPages[i].ImageKey];
                    }

                    ContextMenuStrip.Items.Add(item);
                }

                if (GetTabRect(i).Contains(PointToClient(Cursor.Position)))
                {
                    _hoveredPage = TabPages[i];
                }
            }

            if (_hoveredPage == null || NotCloseableTabs.Contains(_hoveredPage.Name))
            {
                e.Cancel = true;
            }
        }