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