Пример #1
0
        /// <summary>
        /// Close a given tab in the UI
        /// </summary>
        /// <param name="tab"></param>
        private void CloseTab(TabPage tab)
        {
            Debug.Assert(tab != null);

            // If this is the last tab, we need to add an empty tab before we remove it
            if (tabControl1.TabCount == 1)
            {
                if (CoreSettings.CoreSettings.Default.ExitOnTabClosing)
                {
                    Application.Exit();
                    return;
                }
                else
                {
                    AddEmptyTab();
                }
            }

            if (tab == tabControl1.SelectedTab)
            {
                // need to select another tab first
                for (var i = 0; i < tabControl1.TabCount; ++i)
                {
                    if (tabControl1.TabPages[i] == tab)
                    {
                        continue;
                    }
                    SelectTab(tabControl1.TabPages[i]);
                    break;
                }
            }

            // free all internal data for this scene
            UiState.RemoveTab(tab);

            // and drop the UI tab
            tabControl1.TabPages.Remove(tab);

            if (TabChanged != null)
            {
                TabChanged((Tab)tab.Tag, false);
            }

            if (_emptyTab == tab)
            {
                _emptyTab = null;
            }
        }
Пример #2
0
        /// <summary>
        /// Close a given tab in the UI
        /// </summary>
        /// <param name="tab"></param>
        private void CloseTab(TabPage tab)
        {
            Debug.Assert(tab != null);

            // If this is the last tab, we need to add an empty tab before we remove it
            if (tabControl1.TabCount == 1)
            {
                AddEmptyTab();
            }

            if (tab == tabControl1.SelectedTab)
            {
                // need to select another tab first
                for (var i = 0; i < tabControl1.TabCount; ++i)
                {
                    if (tabControl1.TabPages[i] == tab)
                    {
                        continue;
                    }
                    SelectTab(tabControl1.TabPages[i]);
                    break;
                }
            }

            // free all internal data for this scene
            UiState.RemoveTab(tab);

            // and drop the UI tab
            tabControl1.TabPages.Remove(tab);

            TabChanged?.Invoke((Tab)tab.Tag, false);

            if (_emptyTab == tab)
            {
                _emptyTab = null;
            }
        }