public DockWindowTabCollection(Form1 parent) { TabPages = new List<DockWindowTabPage>(); TabPageType[] types = (TabPageType[])Enum.GetValues(typeof(TabPageType)); foreach (var x in types) { DockWindowTabPage form = new DockWindowTabPage(x, parent, this); TabPages.Add(form); } //PageのUnitの部分をコピー UnitPageFactory = new TabUnitPageFactory(parent, this); UnitPageFactory.UnitPages.Add(TabPages[(int)TabPageType.Unit]); //親スクリーンの設定 this.MainScreen = parent; //非タブページ Pages = new List<IMyDockingWindow>(); NonTabPageType[] ntype = (NonTabPageType[])Enum.GetValues(typeof(NonTabPageType)); foreach(var x in ntype) { IMyDockingWindow dw = x.CreateWindowInstance(parent, this); Pages.Add(dw); } }
//再利用なしでページを作る public DockWindowTabPage CreateNew(EventHandler dockStateChangedEventHandler) { DockWindowTabPage page = new DockWindowTabPage(TabPageType.Unit, _parent, _collection); page.DockStateChanged += new EventHandler(dockStateChangedEventHandler); this.UnitPages.Add(page); return page; }
//再利用ありでページを作る public DockWindowTabPage Create() { //再利用できるウィンドウがある場合 foreach(var x in UnitPages) { if(x.DockState == DockState.Hidden) { return x; } } //新規に作る場合 DockWindowTabPage page = new DockWindowTabPage(TabPageType.Unit, _parent, _collection); this.UnitPages.Add(page); return page; }