private void tsmi_open_Click(object sender, EventArgs e) { var openFileDialog = new OpenFileDialog { Filter = @"Binary format (*.dat)|*.dat|XML format (*.xml)|*.xml|" + @"JSON format (*.json)|*.json|YAML format (*.yaml)|*.yaml" }; if (openFileDialog.ShowDialog() == DialogResult.Cancel) { return; } try { var shapes = PctbxMemento.RestoreState(openFileDialog.FilterIndex, openFileDialog.FileName); foreach (var shape in shapes) { tbcntrl_canvas.Controls[shape.TabIndex].Controls.OfType <PictureBox>().FirstOrDefault().Controls.Add(shape); } } catch (Exception) { MessageBox.Show(@"There is no saved data!!!", @"Balls", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
private void tsmi_save_Click(object sender, EventArgs e) { var saveFileDialog = new SaveFileDialog { Filter = @"Binary format (*.dat)|*.dat|XML format (*.xml)|*.xml|" + @"JSON format (*.json)|*.json|YAML format (*.yaml)|*.yaml" }; if (saveFileDialog.ShowDialog() == DialogResult.Cancel) { return; } List <Shape> shapes = new List <Shape>(); foreach (var item in tbcntrl_canvas.TabPages) { foreach (var pctbx in ((TabPage)item).Controls) { shapes.AddRange(((PictureBox)pctbx).Controls.OfType <Shape>().Select(shape => shape).ToList()); } } var memento = new PctbxMemento(shapes); memento.SaveState(saveFileDialog.FilterIndex, saveFileDialog.FileName); }