If you don't need want to allow more than 24 hours and you don't want to specify milliseconds I think the DateTime picker works the best, especially if you create a user control to make it a TimeSpan picker.
The nice thing is that you can updown the hours / minutes / seconds. It automatically prevents you to set a time of more then 60 minutes / seconds.
The disadvantage: no milliseconds and no times longer than a day.
In developer studio add a new user control: TimePicker.
On the user control put a DateTime picker.
Change the properties:
- Format: Time; this makes that you only see a time (with seconds) until 24 hours
- ShowUpDown: True: this makes that you can't open a calendar. You'll have an up-down for the hours / minutes / seconds.
The localized time format is used. If you want a specific time format use the custom time format.
React on the event validated to read the value as a DateTime and subtract if from the Midnight at the beginning of the same day. The result will be a TimeSpan.
Return this value in Valug.Get.
Value.Set: add the DateTime of today midnight to the TimeSpan to set.
If you need more than 24 hours, or want to add milliseconds, add a textbox and use validating and TryParse. This will even allow users to used ticks instead of a time notitaion. If not validated, use a tool tip to display the error.