c# - How do you get a value from a TextField in DataGridView while the field is being updated -


i have datagridview text in there (i.e. datagridviewtextboxcolumn), , every time text changes in 1 of these fields, update method has called somewhere else. however, noticed when updating textbox, value in cell not updated yet.

class myform : form {     private system.windows.forms.datagridview m_datagridview;     private system.windows.forms.datagridviewtextboxcolumn m_textboxcolumn;      private void m_datagridview_editingcontrolshowing(object sender, datagridvieweditingcontrolshowingeventargs editevent)     {         if (editevent.control textbox != null)         {             textbox textbox = editevent.control textbox;             textbox.textchanged -= new eventhandler(textbox_textchanged);             textbox.textchanged += new eventhandler(textbox_textchanged);         }     }      private void textbox_textchanged(object sender, eventargs e)     {         updatetext();     }      private void updatetext()     {         foreach (datagridviewrow row in m_datagridview.rows)         {             if (row.cells[1].value != null)             {                 string text = row.cells[1].value.tostring();                 system.diagnostics.debug.writeline(text);             }         }     } } 

so give example: if text in textbox "f", , type "oo", expect console output:

"f" "fo" "foo" 

instead, writes is:

"f" "f" "f" 

is there way access contents of textboxes within in updatetext() method while textboxes being edited?

the datagridviewcell.value won't updated right while type in editing control. it's design. value updated after it's validated when currentcell not in edit mode. think want this:

private void textbox_textchanged(object sender, eventargs e) {     updatetext(sender control); } private void updatetext(control editingcontrol) {   system.diagnostics.debug.writeline(editingcontrol.text); } 

update

i think can try thing this:

string editingtext; int editingrowindex = -1; private void textbox_textchanged(object sender, eventargs e) {     editingrowindex = ((datagridviewtextboxeditingcontrol)sender).editingcontrolrowindex;     editingtext = (sender control).text;     updatetext(); } private void updatetext() {     foreach (datagridviewrow row in m_datagridview.rows)     {         if (row.cells[1].value != null)         {             string text = row.index == editingrowindex ?                           editingtext : row.cells[1].value.tostring();             system.diagnostics.debug.writeline(text);         }     } } 

Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -