示例#1
0
        //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");
                }
            }
        }
示例#2
0
        /// <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();
        }