I am surprised that LabVIEW fires a "value changed" event programmatically. I tried, but failed to duplicate your problem, because it had the potential
to be useful for my application...
I put an event structure which captured "value change" events for a string control in one while loop,
and created a parallel while loop to capture events on a "load" boolean. The load boolean value changed event triggered loading a string from a file, and writing it into the string control.
When I ran the VI, and pressed "Load", the value from the file appeared in the string control, but no event fired.
What is different between my scenario and yours? Is there some LabVIEW config file option that allows you to fire events programmatically, while I am only able to fire
them through directly-user-interface triggered actions?