Subclass your textboxes, create a property called IsDirty, set the property
to True the first time the text change event is fired (you could even make
it a little smarter by recording the default value, to compare to see if the
value was changed back to the default and then set the IsDirty flag to
false).
Then, either keep a collection at the form level of all these textboxes so
you can enumerate them quite seemlessly, and check the IsDirty property in
succession on each control, or just enumerate all controls on the form and
check for a control of type equal to your text box subclass (the former is
more efficient), and check the IsDirty property.
Jediah L.