Thinking about it I guess it is behaving as expected. ie: when leaving the control the validating routine runs and when it fails the action to move elsewhere is aborted through the e.cancel. So with this in mind I have moved the code to different events such as "TextChanged" and "Leave" BUT for some reason the errorprovider only displays on some occasions rather than all. Typically on the first time I enter an invalid value (such as blank ""), the errorprovider doesn't display but if I create the same error it displays. This validation stuff is driving me Nuts !!!! What do you guys normally do to validate a whole bunch of controls on a page ? I would have thought validating field by field was more user friendly than waiting til the end and doing it, but as described in my example sometimes it isn't practical to force a user to stay on the control.