Introduction
This control displays the combined date and time, with calendar dropdown and updown
arrows. It is basically two DatePicker controls merged using a SplitContainer. The
splitter bar can be adjusted to give more room to either side.
This is my first attempt at such a control, so if there is another way, I'm open to suggestions.
Background
The DatePicker control can display only date or time values. I currently use a combined date/time control in our MFC apps (BCGDateTime). When I moved to VS 2005, I couldn't find one written for .NET, so I tackled this.
Adding the control
Use Add Reference to add a reference to the DateAndTimeControls
assembly in your project.
Add the control to the toolbox by right-clicking in a category and using Choose Items.
Drag the control onto the form. The properties panel shows the new properties and events:
DateTimeValue
- the default property of the control.
DateValue
- just the date value of the control
TimeValue
- just the time value of the control>
MinDate
- the minimum date/time value for the control
MaxDate
- the maximum date/time value for the control
DateFormat
- the enumerated datepicker format value (ie long)
DateCustom
- the custom format mask (ie dd-MMM-yyyy)
TimeFormat
- the enumerated DatePicker format value (ie time)
TimeCustom
- the custom format mask (ie hh:mi tt)
ValueChanged
- the default event for the control. fired whenever the value is changed.
Using the control
To get a value from the control:
dim dt as Date
dt = DateTimeControl1.DateTimeValue
tTextbox1.Text = dt.ToString("dd-mmm-yyyy hh:mi tt")
To put a value in the control:
DateTimeControl1.DateTimeValue = Date.Now
or
Date.TryParse(TextBox1.Text, DateTimeControl1.DateTimeValue)
The constructor will give an error if the date is outside the MinDate-MaxDate range.
To clear the control:
DateTimeControl1.DateTimeValue = new Date(0L)
The date can also be cleared by typing <Backspace> in the control.
Points of Interest
Thanks to this project, I learned how to expose new class events to the outside world.