// 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; }