/// <summary> /// ///////////////////////////////////////////////////////////////////////////////////// /// I added this method with the intent it be used for when cell change messages are /// received from the server /// ///////////////////////////////////////////////////////////////////////////////////// /// </summary> /// <param name="col"></param> /// <param name="row"></param> /// <param name="contents"></param> private void ChangeCellContents() { this.Invoke((MethodInvoker) delegate { if (cellTextBox.Location.X == 42 && cellTextBox.Location.Y == 79) { if (sheet.GetCellValue("A1").ToString() != null) { cellContentsField.Text = sheet.GetCellContents("A1").ToString(); cellValueField.Text = sheet.GetCellValue("A1").ToString(); cellTextBox.Text = sheet.GetCellValue("A1").ToString(); } else { cellContentsField.Text = ""; cellValueField.Text = ""; cellTextBox.Text = ""; } } string name = state.CellName; string value = ""; try { //store contents in backing sheet if (state.Contents.Length > 0 && state.Contents[0] == '=') { sheet.SetContentsOfCell(name, state.Contents.ToUpper()); } else { sheet.SetContentsOfCell(name, state.Contents); } object valueObj = ""; //get value of cell from backing sheet if (sheet.GetCellContents(name) is String && !sheet.GetCellContents(name).Equals("")) { valueObj = sheet.GetCellValue(name); } //handle formula errors if (valueObj.GetType().Equals(typeof(FormulaError))) { FormulaError fe = (FormulaError)valueObj; value = fe.Reason; } //store value of cell else { value = valueObj.ToString(); } } catch (FormulaFormatException ffe) { value = ffe.Message; } cellValueField.Text = value; spreadsheetPanel1.SetValue(state.Col, state.Row, value); try { foreach (string s in sheet.CheckValues(name)) { int row, col; Int32.TryParse(s.Substring(1, s.Length - 1), out row); col = s[0] - 65; spreadsheetPanel1.SetValue(col, row - 1, sheet.GetCellValue(s).ToString()); cellValueField.Text = sheet.GetCellValue(s) + ""; UpdateGUIFields(s); } } catch (InvalidCastException e) { MessageBox.Show("You can't do that"); } updateCells(name); cellTextBox.Text = ""; contentsChanged = false; }); }