65.9K
CodeProject is changing. Read more.
Home

Composite Date & Time Control

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.40/5 (11 votes)

Apr 11, 2007

CPOL

2 min read

viewsIcon

70338

downloadIcon

1628

A control showing both date and time

Screenshot - CompositeDateTime_pic.jpg

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.

Screenshot - choose_item.jpg

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.