/// <summary> /// Adds/updates a tab page with the provided name and the provided component. /// </summary> /// <param name="name">Name of the tab page to add or update</param> /// <param name="component">Component to add or update</param> /// <param name="swap">Whether to swap to the new component</param> public void AddTabComponent(string name, object component, bool swap = false) { var design = (Design)component; TabPage existingTabPage = FindTab(name); if (existingTabPage == null) { TabPage newTabPage = new TabPage(name); newTabPage.Text = name; newTabPage.ToolTipText = $"{name}.vbi"; newTabPage.Controls.Add(design); design.Dock = DockStyle.Fill; design.DesignEdit += (designName, isDirty) => { TabPage tabPage = FindTab(designName); tabPage.Text = isDirty ? $"*{designName}" : designName; Controller.LoadDisplay(DisplayType.EDIT); }; TabControl.TabPages.Add(newTabPage); if (swap) { TabControl.SelectedTab = newTabPage; } } else { existingTabPage.Controls.Clear(); existingTabPage.Controls.Add(design); design.Dock = DockStyle.Fill; if (swap) { TabControl.SelectedTab = existingTabPage; } } pnlMain.Focus(); }