コード例 #1
0
        private void Workspaces_Changed(object sender, WorkspacesChangedEventArgs e)
        {
            var workspace     = e.Workspace;
            var activePrinter = workspace.Printer;

            if (e.Operation == WorkspacesChangedEventArgs.OperationType.Add ||
                e.Operation == WorkspacesChangedEventArgs.OperationType.Restore)
            {
                // Create printer or part tab
                bool      isPrinter = activePrinter?.Settings.PrinterSelected == true;
                ChromeTab newTab    = isPrinter ? CreatePrinterTab(workspace, theme) : CreatePartTab(workspace);

                if (e.Operation == WorkspacesChangedEventArgs.OperationType.Add)
                {
                    ApplicationController.Instance.MainTabKey = newTab.Key;
                }

                // Activate tab with previously active key
                if (newTab.Key == ApplicationController.Instance.MainTabKey)
                {
                    tabControl.ActiveTab = newTab;
                }
            }
            else
            {
                // Close existing printer tabs
                if (tabControl.AllTabs.FirstOrDefault(t => t.TabContent is PrinterTabPage printerTab &&
                                                      printerTab.Printer.Settings.ID == activePrinter.Settings.ID) is ITab tab &&
                    tab.TabContent is PrinterTabPage printerPage)
                {
                    tabControl.CloseTab(tab);
                }
            }
        }
コード例 #2
0
        private void Workspaces_Changed(object sender, WorkspacesChangedEventArgs e)
        {
            var activePrinter = e.Workspace.Printer;

            if (e.Operation == WorkspacesChangedEventArgs.OperationType.Add)
            {
                // Create and switch to new printer tab
                if (activePrinter?.Settings.PrinterSelected == true)
                {
                    tabControl.ActiveTab = this.CreatePrinterTab(e.Workspace, theme);
                }
                else
                {
                    tabControl.ActiveTab = this.CreatePartTab(e.Workspace);
                }

                tabControl.RefreshTabPointers();
            }
            else
            {
                // Close existing printer tabs
                if (tabControl.AllTabs.FirstOrDefault(t => t.TabContent is PrinterTabPage printerTab &&
                                                      printerTab.printer.Settings.ID == activePrinter.Settings.ID) is ITab tab &&
                    tab.TabContent is PrinterTabPage printerPage)
                {
                    tabControl.RemoveTab(tab);
                    tabControl.RefreshTabPointers();
                }
            }
        }