// Returns true for success, returns false when the OnDataError event cancels the operation. private bool InitializeEditingControlValue(ref DataGridViewCellStyle dataGridViewCellStyle, DataGridViewCell dataGridViewCell) { Debug.Assert(dataGridViewCell != null); Debug.Assert(this.editingControl != null); DataGridViewDataErrorEventArgs dgvdee = null; object initialFormattedValue = dataGridViewCell.GetFormattedValue(this.ptCurrentCell.Y, ref dataGridViewCellStyle, DataGridViewDataErrorContexts.Formatting); this.dataGridViewState1[DATAGRIDVIEWSTATE1_editingControlChanging] = true; this.dataGridViewState1[DATAGRIDVIEWSTATE1_ignoringEditingChanges] = true; try { dataGridViewCell.InitializeEditingControl(this.ptCurrentCell.Y, initialFormattedValue, dataGridViewCellStyle); ((IDataGridViewEditingControl)this.editingControl).EditingControlValueChanged = false; } catch (Exception exception) { if (ClientUtils.IsCriticalException(exception)) { throw; } dgvdee = new DataGridViewDataErrorEventArgs(exception, this.ptCurrentCell.X, this.ptCurrentCell.Y, DataGridViewDataErrorContexts.InitialValueRestoration); OnDataErrorInternal(dgvdee); } finally { this.dataGridViewState1[DATAGRIDVIEWSTATE1_editingControlChanging] = false; this.dataGridViewState1[DATAGRIDVIEWSTATE1_ignoringEditingChanges] = false; } if (dgvdee != null) { if (dgvdee.ThrowException) { throw dgvdee.Exception; } return !dgvdee.Cancel; } // Save unedited value so we can restore it later if parsing of new value fails this.uneditedFormattedValue = initialFormattedValue; return true; }
private bool InitializeEditingControlValue(ref DataGridViewCellStyle dataGridViewCellStyle, DataGridViewCell dataGridViewCell) { DataGridViewDataErrorEventArgs e = null; object initialFormattedValue = dataGridViewCell.GetFormattedValue(this.ptCurrentCell.Y, ref dataGridViewCellStyle, DataGridViewDataErrorContexts.Formatting); this.dataGridViewState1[0x4000] = true; this.dataGridViewState1[0x200] = true; try { dataGridViewCell.InitializeEditingControl(this.ptCurrentCell.Y, initialFormattedValue, dataGridViewCellStyle); ((IDataGridViewEditingControl) this.editingControl).EditingControlValueChanged = false; } catch (Exception exception) { if (System.Windows.Forms.ClientUtils.IsCriticalException(exception)) { throw; } e = new DataGridViewDataErrorEventArgs(exception, this.ptCurrentCell.X, this.ptCurrentCell.Y, DataGridViewDataErrorContexts.InitialValueRestoration); this.OnDataErrorInternal(e); } finally { this.dataGridViewState1[0x4000] = false; this.dataGridViewState1[0x200] = false; } if (e != null) { if (e.ThrowException) { throw e.Exception; } return !e.Cancel; } this.uneditedFormattedValue = initialFormattedValue; return true; }
// Returns true for success, returns false when the OnDataError event cancels the operation. private bool InitializeEditingCellValue(ref DataGridViewCellStyle dataGridViewCellStyle, ref DataGridViewCell dataGridViewCell) { DataGridViewDataErrorEventArgs dgvdee = null; // Save unedited value so we can restore it later if parsing of new value fails this.uneditedFormattedValue = dataGridViewCell.GetFormattedValue(this.ptCurrentCell.Y, ref dataGridViewCellStyle, DataGridViewDataErrorContexts.Formatting); this.dataGridViewState1[DATAGRIDVIEWSTATE1_ignoringEditingChanges] = true; try { IDataGridViewEditingCell dataGridViewEditingCell = dataGridViewCell as IDataGridViewEditingCell; Debug.Assert(dataGridViewEditingCell != null); object currentFormattedValue = dataGridViewEditingCell.GetEditingCellFormattedValue(DataGridViewDataErrorContexts.Formatting); if ((currentFormattedValue == null && this.uneditedFormattedValue != null) || (currentFormattedValue != null && this.uneditedFormattedValue == null) || (currentFormattedValue != null && !this.uneditedFormattedValue.Equals(currentFormattedValue))) { Debug.Assert(this.ptCurrentCell.X == dataGridViewCell.ColumnIndex); dataGridViewCell = this.Rows[this.ptCurrentCell.Y].Cells[this.ptCurrentCell.X]; // unshare the edited cell dataGridViewEditingCell = dataGridViewCell as IDataGridViewEditingCell; dataGridViewEditingCell.EditingCellFormattedValue = this.uneditedFormattedValue; dataGridViewEditingCell.EditingCellValueChanged = false; } } catch (Exception exception) { if (ClientUtils.IsCriticalException(exception)) { throw; } dgvdee = new DataGridViewDataErrorEventArgs(exception, this.ptCurrentCell.X, this.ptCurrentCell.Y, DataGridViewDataErrorContexts.InitialValueRestoration); OnDataErrorInternal(dgvdee); } finally { this.dataGridViewState1[DATAGRIDVIEWSTATE1_ignoringEditingChanges] = false; } if (dgvdee != null) { if (dgvdee.ThrowException) { throw dgvdee.Exception; } return !dgvdee.Cancel; } return true; }
private bool InitializeEditingCellValue(ref DataGridViewCellStyle dataGridViewCellStyle, ref DataGridViewCell dataGridViewCell) { DataGridViewDataErrorEventArgs e = null; this.uneditedFormattedValue = dataGridViewCell.GetFormattedValue(this.ptCurrentCell.Y, ref dataGridViewCellStyle, DataGridViewDataErrorContexts.Formatting); this.dataGridViewState1[0x200] = true; try { IDataGridViewEditingCell cell = dataGridViewCell as IDataGridViewEditingCell; object editingCellFormattedValue = cell.GetEditingCellFormattedValue(DataGridViewDataErrorContexts.Formatting); if ((((editingCellFormattedValue == null) && (this.uneditedFormattedValue != null)) || ((editingCellFormattedValue != null) && (this.uneditedFormattedValue == null))) || ((editingCellFormattedValue != null) && !this.uneditedFormattedValue.Equals(editingCellFormattedValue))) { dataGridViewCell = this.Rows[this.ptCurrentCell.Y].Cells[this.ptCurrentCell.X]; cell = dataGridViewCell as IDataGridViewEditingCell; cell.EditingCellFormattedValue = this.uneditedFormattedValue; cell.EditingCellValueChanged = false; } } catch (Exception exception) { if (System.Windows.Forms.ClientUtils.IsCriticalException(exception)) { throw; } e = new DataGridViewDataErrorEventArgs(exception, this.ptCurrentCell.X, this.ptCurrentCell.Y, DataGridViewDataErrorContexts.InitialValueRestoration); this.OnDataErrorInternal(e); } finally { this.dataGridViewState1[0x200] = false; } if (e == null) { return true; } if (e.ThrowException) { throw e.Exception; } return !e.Cancel; }