I would also either go with the validation events, or the TextChanged event to try and parse out the text into a DateTime object. You can cache the text before you try and parse it, and roll back the text to the previous if the parsing fails.
Again, there are a hundred different ways to approach this problem, some may be arguably better than others, but most will get you where you want to go.
Dig Deeper on C# programming language
Related Q&A from Mark Belles
This expert response shows how to access VB .NET Windows control on the client side. Continue Reading