Valse echo eet letter op bij invoer en weergave

Ik had een vervelende fenomeen van een soort “echo” op mijn scherm in een textbox, die ik wilde vullen met de invoer van een andere textbox.

De invoer gebeurde in txbxEditField.

Het was de bedoeling dat als de tekst daar klaar was, en de gebruiker enter of return drukt, de tekst ingevuld wordt in een cel in een tabel “tbvwDoel”. Het invullen in die tabel gebeurde met de functie valToTable() die in essentie niet meer doet dan:

tbvwDoel[iRowSelected, iColNewValue].Text = txbxEditField.Text

Ik ving bij het invoeren de Enter en de Return knop op om de invoer te aanvaarden:


PUBLIC SUB txbxEditField_KeyPress()
IF Key.Enter
valToTable()
btEditOk_Click()
ENDIF
IF Key.Return
valToTable()
btEditOk_Click()
ENDIF
END

Maar het vervelende effect was dat in de tabel de tekst die ingetikt wordt zichbaar is maar telkens met 1 letter vertraging, met 1 letter minder dan wat ingegeven is. Dat is bijzonder irrittant voor de gebruiker, die eigenlijk kijkt naar de plaats in de tabel in plaats van naar het invulveld.

Het is een kleine “logische” fout:


PUBLIC SUB txbxEditField_KeyPress()
IF Key.Code = Key.Enter
valToTable()
btEditOk_Click()
ENDIF
IF Key.Code = Key.Return
valToTable()
btEditOk_Click()
ENDIF
END

Nu gebeurt wat de bedoeling is. Het andere, verkeerde effect is leuk om te onthouden …