//Event Handler for opening an existing spreadsheet // added an additional parameter for 'Piping' in the FileName private void openMenuItem_Click(object sender, EventArgs e, SpreadsheetPanel panel, ref string FileName) { OpenFileDialog newDialog = new OpenFileDialog(); newDialog.Filter = "Spreadsheet files (*.sprd)|*.sprd|All files (*.*)|*.*"; if (newDialog.ShowDialog() == DialogResult.OK) { try { if (panel.getSS().Changed) { // ask if the spreadsheet should be overridden DialogResult r = MessageBox.Show("Do you want to save your changes?", "Save?", MessageBoxButtons.YesNoCancel); if (r == DialogResult.Yes) { saveMenuItem.PerformClick(); foreach (string cell in panel.getSS().GetNamesOfAllNonemptyCells()) { int col, row; cellAddress(cell, out col, out row); panel.SetValue(col, row, ""); } FileName = newDialog.FileName; //updating the FileName panel.setSS(new Spreadsheet(FileName, validator, s => s.ToUpper(), "ps6")); OpeningSpreadsheet.RunWorkerAsync(); this.Text = FileName.Substring(FileName.LastIndexOf("\\") + 1); } else if (r == DialogResult.No) { foreach (string cell in panel.getSS().GetNamesOfAllNonemptyCells()) { int col, row; cellAddress(cell, out col, out row); panel.SetValue(col, row, ""); } FileName = newDialog.FileName; //updating the FileName panel.setSS(new Spreadsheet(FileName, validator, s => s.ToUpper(), "ps6")); OpeningSpreadsheet.RunWorkerAsync(); this.Text = FileName.Substring(FileName.LastIndexOf("\\") + 1); } } } catch { MessageBox.Show("Unable to open file"); } } }
/// <summary> /// Initialize a new form /// </summary> /// <param name="FileName">"" if new form</param> public Form1(string FileName) { InitializeComponent(); Spreadsheet ss; if (FileName == "") { ss = new Spreadsheet(validator, s => s.ToUpper(), "ps6"); } else { ss = new Spreadsheet(FileName, validator, s => s.ToUpper(), "ps6"); this.Text = FileName.Substring(FileName.LastIndexOf("\\") + 1); } spreadsheetPanel1.setSS(ss); spreadsheetPanel1.setSelectedCell("A1"); spreadsheetPanel1.SetSelection(0, 0); // Adding event handlers to Form items // Some of the handlers take in additional variables to use spreadsheetPanel1.SelectionChanged += displaySelection; newMenuItem.Click += newMenuItem_Click; closeMenuItem.Click += closeMenuItem_Click; openMenuItem.Click += (sender, e) => openMenuItem_Click(sender, e, spreadsheetPanel1, ref FileName); saveMenuItem.Click += (sender, e) => saveMenuItem_Click(sender, e, spreadsheetPanel1, ref FileName); saveAsMenuItem.Click += (sender, e) => saveAsMenuItem_Click(sender, e, spreadsheetPanel1, ref FileName); cancelBtn.Click += (sender, e) => cancelBtn_Click(sender, e, spreadsheetPanel1); goBtn.Click += (sender, e) => goBtn_Click(sender, e, spreadsheetPanel1); OpeningSpreadsheet.DoWork += new System.ComponentModel.DoWorkEventHandler((sender, e) => OpenSpreadsheet_Worker(sender, e, spreadsheetPanel1)); KeyDown += new System.Windows.Forms.KeyEventHandler((sender, e) => Form1_KeyDown(sender, e, spreadsheetPanel1)); FormClosing += new System.Windows.Forms.FormClosingEventHandler((sender, e) => Form1_FormClosing(sender, e, spreadsheetPanel1)); ContentTxtBox.TextChanged += new System.EventHandler((sender, e) => ContentTxtBox_TextChanged(sender, e, spreadsheetPanel1)); // This needs to be set to true allow the arrow keys to work this.KeyPreview = true; // run a worker thread to load all the cells that may contain data OpeningSpreadsheet.RunWorkerAsync(); ContentTxtBox.Focus(); }