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