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