By default, if you need to format the cells in RadCalendar, the ElementRender event is an appropriate solution. However, it doesn't process the row/column header cell elements illustrated in the attached screenshot.
Workaround:
MonthViewElement mve = (MonthViewElement)this.radCalendar1.CalendarElement.CalendarVisualElement;
Run the attached sample project and try entering "1400/12/30".
CultureInfo info = new CultureInfo("fa-Ir");
this.radDateTimePicker1.Format = DateTimePickerFormat.Custom;
this.radDateTimePicker1.CustomFormat = "yyyy/MM/dd";
this.radDateTimePicker1.Culture = info;
The following exception occurs:
at System.Globalization.PersianCalendar.ToDateTime(Int32 year, Int32 month, Int32 day, Int32 hour, Int32 minute, Int32 second, Int32 millisecond, Int32 era) at System.Globalization.Calendar.ToDateTime(Int32 year, Int32 month, Int32 day, Int32 hour, Int32 minute, Int32 second, Int32 millisecond) at Telerik.WinControls.UI.ArabicMaskDateTimeProvider.KeyPress(Object sender, KeyPressEventArgs e) at Telerik.WinControls.UI.RadMaskedEditBoxElement.TextBoxItem_KeyPress(Object sender, KeyPressEventArgs e) at System.Windows.Forms.KeyPressEventHandler.Invoke(Object sender, KeyPressEventArgs e) at Telerik.WinControls.RadItem.OnKeyPress(KeyPressEventArgs e) at Telerik.WinControls.UI.RadTextBoxItem.TextBoxControl_KeyPress(Object sender, KeyPressEventArgs e) at System.Windows.Forms.Control.OnKeyPress(KeyPressEventArgs e) at System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m) at System.Windows.Forms.Control.ProcessKeyMessage(Message& m) at System.Windows.Forms.Control.WmKeyChar(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.TextBoxBase.WndProc(Message& m) at System.Windows.Forms.TextBox.WndProc(Message& m) at Telerik.WinControls.UI.HostedTextBoxBase.WndProc(Message& message) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at DateTimePickerPersianCalendar.Program.Main() in c:\Projects\DateTimePickerPersianCalendar\DateTimePickerPersianCalendar\Program.cs:line 17 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
RadCalendar crashes when the focused date is set to a value out of the current view and adding rows/columns is performed.
Add functionality to apply custom format to the current date in the footer area.
Currently the user cannot remove the FocusedDate of RadCalendar.
Set the RadCalendar's NavigationNextImage and NavigationPrevImage properties in design time through property grid. The assigned images is shown in the designer. When run the application the images do not be shown.
radCalendar €“ set AllowMultipleView to be true. Set MultiViewColumn and MultiViewRow to be 2. Try to change the Culture and you will see error: Object reference not set to an instance of an object.
When changing CurrentViewRow or CurrentViewColumn of RadCalendar, the header is shown even when the ShowHeader is set to false.
The border of the special days in RadCalendar does not change on mouse leave.
When RadCalendar is docked inside a panel which is docked in a form and the calendar is in MultiMonth view, the month headers are not displayed properly.
RadCalendar throws an exception when you change the culture to ar-SA.
Use the following code snippet: private void radCalendar1_ViewChanged(object sender, EventArgs e) { this.radCalendar1.SpecialDays.Clear(); RadCalendarDay day = new RadCalendarDay(new DateTime(2014,04,15)); radCalendar1.SpecialDays.Add(day); PictureBox pictureBox = new PictureBox(); pictureBox.SizeMode = PictureBoxSizeMode.StretchImage; pictureBox.Image = Properties.Resources.home; RadHostItem hostItem = new RadHostItem(pictureBox); day.TemplateItem = hostItem; } Clicking the navigation buttons does not navigate you to the respective month. Workaround: assign the RadCalendarDay.TemplateItem before adding the day in the SpecialDays collection: private void radCalendar1_ViewChanged(object sender, EventArgs e) { this.radCalendar1.SpecialDays.Clear(); RadCalendarDay day = new RadCalendarDay(new DateTime(2014,04,15)); PictureBox pictureBox = new PictureBox(); pictureBox.SizeMode = PictureBoxSizeMode.StretchImage; pictureBox.Image = Properties.Resources.home; RadHostItem hostItem = new RadHostItem(pictureBox); day.TemplateItem = hostItem; radCalendar1.SpecialDays.Add(day); } Note: if the initial code is used in the ViewChanging event, clicking the navigation buttons leads to freezing the application.
FIX. RadCalendar - Incorrect week numbering Use the following code snippet: radCalendar1.AllowMultipleView = true; radCalendar1.MultiViewColumns = 1; radCalendar1.MultiViewRows = 5; radCalendar1.ShowRowHeaders = true; CultureInfo ci = new CultureInfo("en-US"); CalendarWeekRule weekRule = CalendarWeekRule.FirstDay; ci.DateTimeFormat.CalendarWeekRule = weekRule; radCalendar1.Culture = ci; Expected behavior: when the CalendarWeekRule is FirstDay, 01/01/2013 should be displayed as week 1
To reproduce: 1. Drag and drop RadCalendar to form 2. Set design time the AllowMultipleView property to true 3. Set design time value of the MultiViewRows and MultiViewColumns properties to 2 4. When save the form or run the project an exception is thrown. Workaround: Set the AllowMultipleView and MultiViewColumns properties with code.
Resolution: Add LabelFormat property to change the format of footer. You can use the following code snippet: this.radCalendar1.CalendarElement.CalendarStatusElement.LabelFormat = "yy/MM/dd dddd";
Workaround: public partial class RadForm1 : Telerik.WinControls.UI.RadForm { public RadForm1() { InitializeComponent(); this.radDateTimePicker1.DateTimePickerElement.Calendar.ElementRender += Calendar_ElementRender; } private void Calendar_ElementRender(object sender, RenderElementEventArgs e) { if (this.radDateTimePicker1.DateTimePickerElement.Calendar.ZoomLevel == ZoomLevel.Days) { return; } CalendarCellElement element = e.Element as CalendarCellElement; if (element != null) { element.WeekEnd = false; } } }
How to reproduce: public partial class RadForm1 : Telerik.WinControls.UI.RadForm { public RadForm1() { InitializeComponent(); ThemeResolutionService.ApplicationThemeName = "VisualStudio2012Light"; this.radCalendar1.ShowRowHeaders = true; this.radCalendar1.AllowMultipleView = true; this.radCalendar1.MultiViewRows = 2; this.radCalendar1.MultiViewColumns = 2; this.radCalendar1.ShowFooter = true; this.radCalendar1.ShowOtherMonthsDays = false; } } Workaround: protected override void OnLoad(EventArgs e) { base.OnLoad(e); MultiMonthViewElement viewElement = this.radCalendar1.CalendarElement.CalendarVisualElement as MultiMonthViewElement; CalendarMultiMonthViewTableElement tableElement = viewElement.FindDescendant<CalendarMultiMonthViewTableElement>() as CalendarMultiMonthViewTableElement; if (tableElement == null) { return; } foreach (RadElement child in tableElement.Children) { MonthViewElement monthViewElement = child as MonthViewElement; if (monthViewElement == null) { continue; } monthViewElement.FindDescendant<CalendarCellElement>().DrawBorder = false; } }
To reproduce:
1. Add RadCalendar/or RadDateTimePicker/ and the MaxValue of calendar control to DateTime.MaxValue.
2. Click on the header and an exception is thrown: System.ArgumentOutOfRangeException: 'The added or subtracted value results in an un-representable DateTime.
Parameter name: months'
Workaround:
To work around this issue we can stop showing this pop-up when one of the three last months of the MaxDate.Year is selected in the RadCalendar ViewChanged event: