In Visual Studio 2005 Microsoft included a Mask control called MaskedTextBox. This control acted like a text box control, but allowed at design time or runtime the ability to add a mask to help the user input proper data.
This conception this is a great idea. The implementation however is not very good. There are a few problems.
The control does not know how to shift characters. An example would be if the mask was $##,###.00 and we had the amount of 100 saved in the data base and we tried to fill the control with that amount the result displayed would be $10,0__.__ where _ is the prompt character. The same problem occurs when the user tried to enter the data. Lets use a format for time like ##:##. When the form loads, the control will look something like this __:__ again using _ as the prompt character. the cursor will be on the left most space so if a user is not careful, the time of 9:30 can be enter like 93:0_. If the user corrects the mistake and saves the value 9:30 the control will load 09:30.
Since most of things that require mask are numbers and things of that nature, it makes this control pretty mush useless.
I found a few posts on the web that discuss this problem and how they solved it.