private bool SynchronizePages() { for (int index = 0; index < Model.CurrentPositions.Count; index++) { if (index >= Positions.Count || Positions[index] != Model.CurrentPositions[index]) { int correspondent = Positions.FindIndex(index, delegate(WebPosition pos) { return pos == Model.CurrentPositions[index]; }); if (correspondent != -1) { TabPage correspondentPage = tabControl1.TabPages[correspondent]; tabControl1.TabPages.RemoveAt(correspondent); tabControl1.TabPages.Insert(index, correspondentPage); return false; } else { BrowserPage browserPage = new BrowserPage(Model.CurrentPositions[index]); browserPage.InitModel(GetModel); browserPage.Dock = DockStyle.Fill; TabPage newPage = new TabPage(); newPage.Controls.Add(browserPage); if (index < tabControl1.TabPages.Count) tabControl1.TabPages.Insert(index, newPage); else tabControl1.TabPages.Add(newPage); return false; } } } if (Positions.Count > Model.CurrentPositions.Count) { for (int index = Model.CurrentPositions.Count; index < Positions.Count; index++) tabControl1.TabPages.RemoveAt(index); } return true; }