/*-------------------------------------------------------------*/ private void btnLdStackConfig_Click(object sender, EventArgs e) { try { using (OpenFileDialog openDialog = new OpenFileDialog()) { openDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); openDialog.Filter = "csv files (.CSV)|*.csv|Text Files (.txt)|*.txt|All Files (*.*)|*.*"; openDialog.Title = "Please select a pnp machine file..."; if (openDialog.ShowDialog() == DialogResult.OK) { //HOW IT WORKS: //1)get the reel list of the displayed layer StackList oldStackList = (StackList)tcPhaseDisplayer.SelectedTab.Controls["stackList"]; List <Reel> stackReelList = oldStackList.GetTotalList(); //2) Make a new phase string[] stackConfig = pnpMachine.LoadStackConfiguration(openDialog.FileName); //StackList newStackList = new StackList(pnpMachine, openDialog.FileName, stackReelList); StackList newStackList = new StackList(pnpMachine, stackConfig, stackReelList); newStackList.Name = "stackList"; newStackList.updateAllListsEvent += UpdateAllListsEvent; stacklisters.Add(newStackList); //3) Try to add all components to the new stackList foreach (Reel stackReel in stackReelList) { newStackList.AddReelWithUpdate(stackReel); } //4) int phaseCounter = 0; tcPhaseDisplayer.TabPages.Clear(); stacklisters = stacklisters.OrderBy(stacklist_ => stacklist_.Layer).ToList(); //http://stackoverflow.com/questions/3309188/how-to-sort-a-listt-by-a-property-in-the-object while (phaseCounter < stacklisters.Count) { StackList curStackList = stacklisters[phaseCounter]; if (curStackList.ContainsReels) { phaseCounter++; curStackList.PhaseNumber = phaseCounter; GenerateTabPage(curStackList); } else { curStackList.updateAllListsEvent -= UpdateAllListsEvent; stacklisters.Remove(curStackList); curStackList.Dispose(); } } } } } catch (Exception exc) { MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }