Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations TouchToneTommy on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

DataGridViewTextBoxEditingControl adding numeric text inside

Status
Not open for further replies.

dzisaacs

Programmer
Dec 12, 2002
53
PA

I have the following code

Code:
/// Puts the current cell in edit mode.
 private void monitorDataGrid_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            validFormat = true;
            monitorDataGrid.EditMode = DataGridViewEditMode.EditOnEnter;
            //monitorDataGrid.BeginEdit(false);
        }

       /// Occurs when a control for editing a cell is showing.
        /// Performs custom initialization of the editing control when a cell enters edit mode
        private void monitorDataGrid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            mKeyUpController.Clear();
            Control ctl = e.Control;

            DataGridViewTextBoxEditingControl dText = (DataGridViewTextBoxEditingControl)ctl;
            dText.EditingControlDataGridView.EditMode = DataGridViewEditMode.EditOnEnter;
            dText.KeyDown += new KeyEventHandler(dText_KeyDown);
            dText.KeyUp += new KeyEventHandler(dText_KeyUp);
        }

void dText_KeyDown(object sender, KeyEventArgs e)
        {
            monitorDataGrid.CurrentCell.ErrorText = String.Empty;

            if (e.KeyData == Keys.OemPeriod || e.KeyData == Keys.Decimal)
            {

            }
            else if (
                     ((int)e.KeyCode >= (int)Keys.D0 && (int)e.KeyCode <= (int)Keys.D9) ||
                     ((int)e.KeyCode >= (int)Keys.NumPad0 && (int)e.KeyCode <= (int)Keys.NumPad9)
                    )
            {  
                DataGridViewTextBoxEditingControl dText = (DataGridViewTextBoxEditingControl)sender;

                e.Handled = false;

                // This is needed for text to go 123 instead of 321
                dText.PrepareEditingControlForEdit(false);
                dText.DeselectAll();
            }
           
        }
For some reason when i run this code if i press a button and the button put an error text in my cell, when i go back , it selects all the text (something selects it not me ) and if i type a number, it will add a number at the end of the current number in the cell

For example
I have in a datagridviewcell the value 1.000

I press a button and puts an error text in the datagridviewcell

i go back and select the value 1.000 and if i press 2 it will put
1.001
if i press 2 again it will put
1.002
if i press 2 again it will put
1.003

** Disclaimer : There's nothing in my code that adds the current value of the cell ... I believe this is a bug of this control

The point is that there's a bug either in my code or in the control that causes this
what should happen is that if i press 2 it should either delete 1.000 and put 2 , or simply append the 2 at the end

ANY THOUGHTS ON WHAT IS CAUSING THIS?
 
I was suggested to remove the events before adding them.... but any thoughts on this?
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top