コード例 #1
0
ファイル: SpreadsheetForm.cs プロジェクト: seattlecoder9/oops
 /// <summary>
 /// Event handler for "cell end edit"
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
 {
     try
     {
         DataGridView dgv = sender as DataGridView;
         SpreadsheetEngine.AbstractCell editedCell = _spreadsheet.GetCell(e.RowIndex, e.ColumnIndex);    // grab reference to backend cell being edited
         if (dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)
         {
             editedCell.Text = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();                                                           // update reference's text
         }
         else
         {
             editedCell.Text = "";                                           // if user removes all text... need to set text to nothing
         }
         dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = editedCell.Value; // display the value rather than the text.
     }
     catch (IndexOutOfRangeException ex)
     {
         MessageBox.Show(
             ex.Message,
             "Index Out Of Range Error",
             MessageBoxButtons.OK
             );
     }
 }
コード例 #2
0
ファイル: SpreadsheetForm.cs プロジェクト: seattlecoder9/oops
        /// <summary>
        /// Demo: randomly assign 50 cells to a test string; set column B cells to "This is cell B#";
        /// and set column A cells to "=B#".
        /// </summary>
        private void Demo()
        {
            // First, randomly assign 50 cells to "Testing" string.
            Random rnd = new Random();     // construct random instance

            for (int i = 0; i < 50; i++)
            {
                SpreadsheetEngine.AbstractCell cell = _spreadsheet.GetCell(rnd.Next(0, Constants.numberOfRows), rnd.Next(0, Constants.numberOfColumns)); // get reference to random cell
                cell.Text = "Testing";                                                                                                                   // set cell's text to the test message
            }

            // Second, assign every row in column B to "This is cell B#." Where # is actual row number.
            for (int i = 0; i < Constants.numberOfRows; ++i)
            {
                SpreadsheetEngine.AbstractCell cell = _spreadsheet.GetCell(i, 1); // 1 == column B
                cell.Text = (i + 1).ToString();                                   // i + 1 because 0-indexing to 1-indexing
            }

            // Lastly, set every row in column B to "=B#", where # is actual row number.
            for (int i = 0; i < Constants.numberOfRows; ++i)
            {
                SpreadsheetEngine.AbstractCell cell = _spreadsheet.GetCell(i, 0); // 0 == column A
                cell.Text = "=B" + (i + 1).ToString();                            // i + 1 because 0-indexing to 1-indexing
            }
        }
コード例 #3
0
ファイル: SpreadsheetForm.cs プロジェクト: seattlecoder9/oops
        /// <summary>
        /// Responsible for handling the event 'PropertyChanged', which is fired
        /// by the AbstractCell class in the backend. Respond by updating the view.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnCellPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            SpreadsheetEngine.AbstractCell backendCell = sender as SpreadsheetEngine.AbstractCell;
            switch (e.PropertyName)
            {
            case "Value":
                dataGridView1.Rows[backendCell.RowIndex].Cells[backendCell.ColumnIndex].Value = backendCell.Value; // display value
                if (_spreadsheet.Error)                                                                            // if error occurred
                {
                    MessageBox.Show(
                        _spreadsheet.ErrorMessage,
                        "Invalid Formula",
                        MessageBoxButtons.OK
                        );
                    _spreadsheet.Error        = false;
                    _spreadsheet.ErrorMessage = "";
                }
                break;

            default:
                break;
            }
        }