Advanced features in Windows Forms DateTimePickerAdv(Classic)
10 Oct 202213 minutes to read
This section covers the below topics:
Data Binding
Essential Tools supports extensive DataBinding in DateTimePickerAdv using the Value and BindableValue property. The following example illustrates the DataBinding of the DataSet belonging to a DataGrid.
NOTE
Always use BindableValue property if dataset contains Null value. In cases where no Null value exists in the dataset, Value property can be used.
To bind a DateTimePickerAdv, perform the following steps.
-
Add a DateTimePickerAdv and a DataGrid controls to the form.
-
Create a dataset using the code below.
// Creating DataSet,Table and rows. DataSet dataSet = null; DataTable table = null; dataSet = new DataSet(); table = dataSet.Tables.Add("Table"); table.Columns.Add("DateTimeColumn", typeof(DateTime)); table.Columns[0].AllowDBNull = true; table.Rows.Add(new object[]{DateTime.Now - TimeSpan.FromDays(60)}); table.Rows.Add(new object[]{DateTime.Now}); table.Rows.Add(new object[]{DBNull.Value});' Creating DataSet,Table and rows. Private dataSet As DataSet = Nothing Private table As DataTable = Nothing Private dataSet = New DataSet() Private table = dataSet.Tables.Add("Table") table.Columns.Add("DateTimeColumn", GetType(DateTime)) Private table.Columns(0).AllowDBNull = True table.Rows.Add(New Object(){DateTime.Now - TimeSpan.FromDays(60)}) table.Rows.Add(New Object(){DateTime.Now}) table.Rows.Add(New Object(){DBNull.Value}) -
Assign the dataset to the DataGrid control using its DataSource property. Set the control’s DataMember property to the member that must be bound.
dataGrid1.DataSource = dataSet; dataGrid1.DataMember = "Table";Private dataGrid1.DataSource = dataSet Private dataGrid1.DataMember = "Table" -
Bind the datasource with the DateTimePickerAdv control.
//Setting the BindableValue property in order to Data Bind. dateTimePickerAdv1.DataBindings.Add("BindableValue", dataSet, "Table.DateTimeColumn"); dateTimePickerAdv1.Focus();'Setting the BindableValue property in order to Data Bind. dateTimePickerAdv1.DataBindings.Add("BindableValue", dataSet, "Table.DateTimeColumn") dateTimePickerAdv1.Focus() -
Run the application. Select a data in the datagrid and DateTimePicker will display the corresponding date value (The DateTimePickerAdv is bound to the datasource using BindableValue property as datasource contains Null value. Selecting in the datagrid will automatically position the datasource to the related row which will update the DateTimePickerAdv with the appropriate data).

A sample which demonstrates this feature is available in the below sample installation path.
…_My Documents\Syncfusion\EssentialStudio\Version Number\Windows\Tools.Windows\Samples\Advanced Editor Functions\ActionGroupingDemo_
Globalization
DateTimePickerAdv supports globalization through DateTimePickerAdv.Culture and UseCurrentCulture property.
this.dateTimePickerAdv1.UseCurrentCulture = false;
this.dateTimePickerAdv1.Culture = new System.Globalization.CultureInfo("hi-IN");Me.dateTimePickerAdv1.UseCurrentCulture = False
Me.dateTimePickerAdv1.Culture = New System.Globalization.CultureInfo("hi-IN")
Custom PopupWindow
This section deals with creating a custom popup window for the DateTimePickerAdv control. We can implement IDateTimePickerAdvCalendar interface to drop down a custom window.
IDateTimePickerAdvCalendar Interface Members
Appearance properties
- CalendarFont
- CalendarForeColor
- CalendarMonthBackground
- TitleBackColor
- TitleForeColor
- TrailingForeColor
Value properties (MinDate, MaxDate, Value)</td><td>
Events
Creating a Custom Popup Window for DateTimePickerAdv
Follow the below steps to add a Windows MonthCalendar control as the Popup for the DateTimePickerAdv, using PopupControlContainer.
- Drag a DateTimePickerAdv, PopupControlContainer and a button onto the form designer from the toolbox.

-
Create a control that implements the IDateTimePickerAdvCalendar interface using the below code.
//Creating Calendar which implements the IDateTimePickerAdvCalendar private MyCustomCalendar MonthCalendar; //Initializing the Calendar this.MonthCalendar = new MyCustomCalendar(); //Defining the Calendar Class which implements IDateTimePickerAdvCalendar public class MyCustomCalendar : MonthCalendar, IDateTimePickerAdvCalendar { private bool active; public bool Active { get { return active; } set { active = value; } } public System.Drawing.Font CalendarFont { get { return Font; } set { Font = value; } } public Color CalendarForeColor { get { return ForeColor; } set { ForeColor = value; } } public Color CalendarMonthBackground { get { return BackColor; } set { BackColor = value; } } public DateTime Value { get { return SelectionStart; } set { SelectionStart = SelectionEnd = value; } } public event DateTimePickerAdv.NullButtonEventHandler NullButtonDown; public event DateTimePickerAdv.SelectDateEventHandler SelectDate; public event DateTimePickerAdv.DateChangedEventHandler DateChange; public MyCustomCalendar() { this.DateSelected += new System.Windows.Forms.DateRangeEventHandler(OnDateSelected); this.DateChanged += new System.Windows.Forms.DateRangeEventHandler(OnDateChanged); } protected void OnDateSelected(object sender, System.Windows.Forms.DateRangeEventArgs e) { if (SelectDate != null) { SelectDate(this, new EventArgs()); } } protected void OnDateChanged(object sender, System.Windows.Forms.DateRangeEventArgs e) { if (DateChange != null) { DateChange(this, new EventArgs()); } } public string Culture { get { return "Not Supported"; } } public void FireNullEvent() { if (NullButtonDown != null) { NullButtonDown(this, new EventArgs()); } } CultureInfo IDateTimePickerAdvCalendar.Culture { get { throw new Exception("The method or operation is not implemented."); } set { throw new Exception("The method or operation is not implemented."); } } }'Creating Calendar which implements the IDateTimePickerAdvCalendar Private MonthCalendar As MyCustomCalendar 'Initializing the Calendar Me.MonthCalendar = New MyCustomCalendar() 'Defining the Calendar Class which implements IDateTimePickerAdvCalendar Public Class MyCustomCalendar Inherits MonthCalendar Implements IDateTimePickerAdvCalendar Private m_active As Boolean Public Property Active() As Boolean Get Return m_active End Get Set(ByVal value As Boolean) m_active = value End Set End Property Public Property CalendarFont() As System.Drawing.Font Get Return Font End Get Set(ByVal value As System.Drawing.Font) Font = value End Set End Property Public Property CalendarForeColor() As Color Get Return ForeColor End Get Set(ByVal value As Color) ForeColor = value End Set End Property Public Property CalendarMonthBackground() As Color Get Return BackColor End Get Set(ByVal value As Color) BackColor = value End Set End Property Public Property Value() As DateTime Get Return SelectionStart End Get Set(ByVal value As DateTime) SelectionStart = SelectionEnd = value End Set End Property Public Event NullButtonDown As DateTimePickerAdv.NullButtonEventHandler Public Event SelectDate As DateTimePickerAdv.SelectDateEventHandler Public Event DateChange As DateTimePickerAdv.DateChangedEventHandler Public Sub New() AddHandler Me.DateSelected, AddressOf OnDateSelected AddHandler Me.DateChanged, AddressOf OnDateChanged End Sub Protected Sub OnDateSelected(ByVal sender As Object, ByVal e As System.Windows.Forms.DateRangeEventArgs) RaiseEvent SelectDate(Me, New EventArgs()) End Sub Protected Sub OnDateChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DateRangeEventArgs) RaiseEvent DateChange(Me, New EventArgs()) End Sub Public ReadOnly Property Culture() As String Get Return "Not Supported" End Get End Property Public Sub FireNullEvent() RaiseEvent NullButtonDown(Me, New EventArgs()) End Sub Private Property Culture() As CultureInfo Implements IDateTimePickerAdvCalendar.Culture Get Throw New Exception("The method or operation is not implemented.") End Get Set(ByVal value As CultureInfo) Throw New Exception("The method or operation is not implemented.") End Set End Property End Class -
Set the Active property of the MonthCalendar to True. Set the DateTimePickerAdv’s CustomPopupWindow property to the PopupControlContainer control. Set the DateTimePickerAdv’s CustomDrop property to theTrue.
this.dateTimePickerAdv1.CustomDrop = true; this.dateTimePickerAdv1.CustomPopupWindow = this.popupControlContainer1; //Setting the DateTimePickerAdv control to consider the interface events by enabling Active property this.MonthCalendar.Active = true; //Adding Calendar to the Popup Control Container this.popupControlContainer1.Controls.Add(this.MonthCalendar);Me.dateTimePickerAdv1.CustomDrop = True Me.dateTimePickerAdv1.CustomPopupWindow = Me.popupControlContainer1 'Setting the DateTimePickerAdv control to consider the interface events by enabling Active property Me.MonthCalendar.Active = True 'Adding Calendar to the Popup Control Container Me.popupControlContainer1.Controls.Add(Me.MonthCalendar) -
In the button click event, call the MyCustomCalendar’s FireNullEvent method.
private void buttonAdv1_Click(object sender, EventArgs e) { //Calling the below method to fire the Null Event of the Calendar control created MonthCalendar.FireNullEvent(); }Private Sub buttonAdv1_Click(ByVal sender As Object, ByVal e As EventArgs) 'Calling the below method to fire the Null Event of the Calendar control created MonthCalendar.FireNullEvent() End Sub -
Run the application and click the dropdown button of the DateTimePickerAdv control to display the custom popup.

- When you click the button, the DateTimePickerAdv will display the NullString specified in NullString property.

A sample which demonstrates adding a MonthCalendarAdv itself as a custom popup calendar to the DateTimePickerAdv control is available in the below sample installation location.
…_My Documents\Syncfusion\EssentialStudio\Version Number\Windows\Tools.Windows\Samples\Advanced Editor Functions\ActionGroupingDemo_