You need to create a custom control only if you want this event to exist for any textbox instance you use throughout your application (i.e. create reusable control).
If you just want to do this test in your form, set up a handler to the textbox TextChanged event, and test the value. Then you can raise an event on your form or do whatever else you need.
Alternatively, if you want a reusable "range tester" (for lack of a better term) for this particular value condition, you could create a class based on the Observer pattern. The class constructor would take an instance of a textbox (to Observe) and a method delegate (to call when condition is met). To user this class on a form you'd have code that looked something like this:
Code:
MyRangeObserver observer1 =
new MyRangeObserver(myTextBox, new OutOfRangeEventDelegate(someMethod));
private void someMethod(...){
//do something here when input is out of range.
}
With the right implementation, you could even make the observer configurable for different range values so it could be reused with different test values. Toss in some generics and anonymous delegates and you could do all sorts of things with a single class implementation (i.e. an anonymous delegate in the observer constructor could provide the test predicate to allow any kind of value test).
-Peter