Run the attached project and select a new value from the drop down for RadTimePicker:
************** Exception Text ************** System.NullReferenceException: Object reference not set to an instance of an object. at Telerik.WinControls.UI.RadTimePickerElement.set_Value(Object value) in C:\Work\Development\RadControls\RadControlsUI\RadTimePicker\Elements\RadTimePickerElement.cs:line 594 at Telerik.WinControls.UI.RadTimePickerContentElement.element_Click(Object sender, EventArgs e) in C:\Work\Development\RadControls\RadControlsUI\RadTimePicker\Elements\ContentPart\RadTimePickerContentElement.cs:line 585 at Telerik.WinControls.RadElement.OnClick(EventArgs e) in C:\Work\Development\RadControls\RadControl\TPF\Element\RadElement.cs:line 5094 at Telerik.WinControls.RadElement.DoClick(EventArgs e) in C:\Work\Development\RadControls\RadControl\TPF\Element\RadElement.cs:line 5158 at Telerik.WinControls.RadElement.RaiseBubbleEvent(RadElement sender, RoutedEventArgs args) in C:\Work\Development\RadControls\RadControl\TPF\Element\RadElement.cs:line 4272 at Telerik.WinControls.RadItem.RaiseBubbleEvent(RadElement sender, RoutedEventArgs args) in C:\Work\Development\RadControls\RadControl\TPF\Element\RadItem.cs:line 779 at Telerik.WinControls.RadElement.RaiseRoutedEvent(RadElement sender, RoutedEventArgs args) in C:\Work\Development\RadControls\RadControl\TPF\Element\RadElement.cs:line 4179 at Telerik.WinControls.RadElement.DoMouseUp(MouseEventArgs e) in C:\Work\Development\RadControls\RadControl\TPF\Element\RadElement.cs:line 5271 at Telerik.WinControls.RadElement.CallDoMouseUp(MouseEventArgs e) in C:\Work\Development\RadControls\RadControl\TPF\Element\RadElement.cs:line 5493 at Telerik.WinControls.ComponentInputBehavior.OnMouseUp(MouseEventArgs e) in C:\Work\Development\RadControls\RadControl\TPF\Control\ComponentInputBehavior.cs:line 75 at Telerik.WinControls.RadControl.OnMouseUp(MouseEventArgs e) in C:\Work\Development\RadControls\RadControl\TPF\Control\RadControl.cs:line 1206 at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ScrollableControl.WndProc(Message& m) at Telerik.WinControls.RadControl.WndProc(Message& m) in C:\Work\Development\RadControls\RadControl\TPF\Control\RadControl.cs:line 1554 at Telerik.WinControls.UI.RadPopupControlBase.WndProc(Message& m) in C:\Work\Development\RadControls\RadControlsUI\GenericPopup\RadPopupControlBase.cs:line 795 at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Workaround:
Timer t = new Timer();
private void RadTimePicker1_ValueChanged(object sender, EventArgs e)
{
if (radTimePicker1.Value == null) return;
var timeval = ((DateTime)radTimePicker1.Value).TimeOfDay;
if (timeval == TimeSpan.Zero)
{
t = new Timer();
t.Interval = 500;
t.Tick += T_Tick; t.Start();
}
}
private void T_Tick(object sender, EventArgs e)
{
t.Stop();
this.radTimePicker1.ValueChanged -= RadTimePicker1_ValueChanged;
this.radTimePicker1.Value = null;
this.radTimePicker1.ValueChanged += RadTimePicker1_ValueChanged;
}
For example:
//from 22:00 till 07:00 the next day.
this.radTimePicker1.MinValue = DateTime.Today.Date.AddHours(22);
this.radTimePicker1.MaxValue = DateTime.Today.Date.AddDays(1).AddHours(7);
Currently, RadTimePicker offers a Value property, typeof(DateTime?) even though the control is designed to manage time values.
With releasing .NET 6, there is TimeOnly type which would be more appropriate for managing time values:
https://devblogs.microsoft.com/dotnet/date-time-and-time-zone-enhancements-in-net-6/
Hi there.
Selecting a time from the TimePicker sets the time. However, if the bound parameter is null, the Date part of the DateTime values are still invalid and will throw errors when saving data to databases.
The TimePicker should at least by default insert a default valid Date even if it is 01/01/1900 or DateTime.Today.
Regards Kieran.
MinValue/MaxValue are ignored when the value is null. When the popup is initially shown any time can be selected.
Add a RadTimePicker to your project and select new time from the popup.
Expected: The clock element inside the popup should be updated accordingly to the newly set value.
Actual: The clock element remains unchanged. It is necessary to close and open the popup again.
Workaround:
private void RadTimePicker1_ValueChanged(object sender, EventArgs e)
{
this.radTimePicker1.TimePickerElement.PopupContentElement.ClockElement.Value = this.radTimePicker1.Value;
}