I figured out the problem here. Long story short.
When the code is on the click event of an image control, the user types characters into a textbox control, and the user directly clicks on the image control, the BeforeUpdate and AfterUpdate events of that textbox control do not fire. That means, I think, that the characters are lost and it looks like the control has been cleared. The code on the image control's click event does fire, but because the text was lost, it seems to have no impact.
When the code is on the click event of a command button control, the user types characters into a textbox control, and then directly clicks on the command button, the BeforeUpdate and AfterUpdate events of that textbox control do fire.
When the code is on the click event of an image control, the user types characters into a textbox control, and then clicks on any other control before clicking the image control, the BeforeUpdate and AfterUpdate events of that textbox control do fire. That means, I think, that the characters are not lost.
I have no idea why the image control seems to bypass the BeforeUpdate and AfterUpdate events of the textbox control, but it sure looks like it to me.
I don't know how this would work on a continuous form.