/// <summary> /// Invoked whenever one of the grids is modified. /// Propagates the signal up to the presenter. /// </summary> /// <param name="sender">Sender object.</param> /// <param name="args">Event arguments.</param> private void GridCellEdited(object sender, EventArgs args) { try { OnCellEndEdit?.Invoke(this, EventArgs.Empty); } catch (Exception err) { ShowError(err); } }
/// <summary> /// Invoked whenever one of the grids is modified. /// Propagates the signal up to the presenter. /// </summary> /// <param name="sender">Sender object.</param> /// <param name="args">Event arguments.</param> private void GridCellEdited(object sender, GridCellsChangedArgs args) { try { OnCellEndEdit?.Invoke(sender, args); } catch (Exception err) { ShowError(err); } }
private void GridCellEdited(object o, EditedArgs args) { Gtk.TreeIter iter; Gtk.TreePath path = new Gtk.TreePath(args.Path); gridModel.GetIter(out iter, path); int row = path.Indices[0]; int col; for (col = 0; col < treeview2.Columns.Count(); col++) { if (treeview2.Columns[col].CellRenderers[0] == o) { break; } } if (col == treeview2.Columns.Count()) { return; // Could not locate the column! } string value = args.NewText.Trim(); if (value == gridModel.GetValue(iter, col) as string) { return; } double numval; if (Double.TryParse(args.NewText, out numval)) { // It seems a bit silly to have two parallel data stores - // a Gtk.ListStore and a System.Data.Table. However, we want a // ListStore for the GUI, and don't want the Presenter to // have to know about Gtk. gridModel.SetValue(iter, col, value); table.Rows[row][col] = value; if (OnCellEndEdit != null) { OnCellEndEdit.Invoke(this, new EventArgs()); } } }