Users need to provide information but probably won’t (and shouldn’t have to) know a lot about what format your system is expecting.
Allow users to enter data in formats that seem natural to them and have your system take responsibility for intelligently parsing and structuring it.
In many cases, a user would have no way of knowing what exact format you expect input data to take on. Rather than requiring users to read a mini-manual for each data field, or forcing users to go through an iterative process of incorrectly entering data and getting error messages, just let users enter data in more natural formats and you do the work.
Consider showing the user what you have interpreted the input to mean, giving the user a chance to notice when the interpretation is incorrect. In cases where your backend is unsure of exactly what the user entered, show the user alternatives that might match, and let the user select the correct one, or indicate none are correct; e.g. multiple potential matches for an address.
You can of course provide brief contextual hints to complement this, but one benefit to allowing users to enter data in ways they already think of it is that you hopefully won’t have to provide as many hints.
Infragistics has some tools that can jumpstart your efforts to implement this pattern. Broken down by technology, they are as follows.
You can use the NetAdvantage for Windows Forms controls: WinCombo and WinComboEditor to implement this pattern by using the auto complete functionality. If you download the NetAdvantage for Win Client bundle, you can find a sample in the WinForms sample browser called AutoComplete Mode to see it in action.
The primary example from maps.live.com lets you type anything that can map to a location: a zip code, city, country, full address, etc. If it is too ambiguous it shows you potential options to choose from.
http://quince.infragistics.com/11ei
This example comes from Microsoft Outlook's tool for setting up a meeting. Look at the "Start time:" and "End time:" fields at the bottom -- you don't need to give it a fully defined date, like what appears in the text fields. If today is April 24, and you want to set up a meeting for April 29, you can type any of the following terms: - next Thu - nxt Thu - thu - 29/4/2008 - 4/29/2008 - 29/4 - 4/29 - five days - 5 days And so on -- there are probably other accepted formats, too. The specified date is then "echoed back" to the user in the appropriate format for the user's language and location, as shown in this example.
http://quince.infragistics.com/10x1
This example from Google Calendar shows how users can enter free form text representing all attributes of a meeting.
http://quince.infragistics.com/118x
Microsoft Word 2007 lets you enter the spacing in points, or any other supported measure like “in” or “cm.”
http://quince.infragistics.com/117d
Jennifer Tidwell, Forgiving Format