public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
        {
            base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);
            clsEventScriptEditor ctl = DataGridView.EditingControl as clsEventScriptEditor;

            ctl.Text = (Value.ToString() != null)?(Value as string):"OnLoad() {}";
            ctl.Open();
        }
        public override void DetachEditingControl()
        {
            DataGridView dataGridView = this.DataGridView;

            if (dataGridView == null || dataGridView.EditingControl == null)
            {
                throw new InvalidOperationException("Cell is detached or its grid has no editing control.");
            }
            clsEventScriptEditor ctl = DataGridView.EditingControl as clsEventScriptEditor;

            if (ctl != null)
            {
                Value            = ctl.Text;
                ctl.Parent       = ctl.EditingPanel;
                ctl.EditingPanel = null;
                ctl.Close();
            }
            base.DetachEditingControl();
        }
        public override void PositionEditingControl(bool setLocation, bool setSize, Rectangle cellBounds, Rectangle cellClip, DataGridViewCellStyle cellStyle, bool singleVerticalBorderAdded, bool singleHorizontalBorderAdded, bool isFirstDisplayedColumn, bool isFirstDisplayedRow)
        {
            clsEventScriptEditor ctl = DataGridView.EditingControl as clsEventScriptEditor;

            if (ctl == null)
            {
                return;
            }
            if (ctl.Parent != DataGridView.EditingPanel)
            {
                return;
            }
            ctl.Parent = ctl.ParentForm;
            Rectangle ctlSize = new Rectangle(new Point(cellBounds.Location.X, cellBounds.Location.Y), new Size(Math.Max(cellBounds.Width, 400), Math.Max(cellBounds.Height, ctl.Height)));

            base.PositionEditingControl(setLocation, setSize, ctlSize, ctlSize, cellStyle, singleVerticalBorderAdded, singleHorizontalBorderAdded, isFirstDisplayedColumn, isFirstDisplayedRow);
            ctl.Location     = ctl.Parent.PointToClient(DataGridView.PointToScreen(cellBounds.Location));
            ctl.EditingPanel = DataGridView.EditingPanel;
            ctl.BringToFront();
        }