To reproduce: public Form1() { InitializeComponent(); this.radCalendar1.RangeMinDate = new DateTime(2014, 1, 1); this.radCalendar1.RangeMaxDate = new DateTime(2017, 7, 17); this.radCalendar1.FocusedDate = new DateTime(2014, 2, 4); this.radCalendar1.AllowFastNavigation = true; this.radCalendar1.FastNavigationStep = 1; this.radCalendar1.AllowMultipleView = true; this.radCalendar1.MultiViewColumns = 4; this.radCalendar1.MultiViewRows = 3; this.radCalendar1.CurrentViewRow = 0; this.radCalendar1.CurrentViewColumn = 1; } The user expects when fast navigating forward, the view to be shifted with one year = 12 months. However, each next forward fast navigation moves with 11 months. Workaround: this.radCalendar1.CurrentViewRow = 0; this.radCalendar1.CurrentViewColumn = 0; this.radCalendar1.CalendarElement.PreviousButton.PerformClick();
The following line does not move MultiMonthView to the specific date: radCalendar1.CalendarElement.View.ViewStartDate = new DateTime(DateTime.Now.Year, 1, 1); Workaround: use RadCalendar's FocusedDate property instead: radCalendar1.FocusedDate = new DateTime(2014, 1, 1);
To reproduce: 1. When set the Disabled to true of special day has not effect this.radCalendar1.SpecialDays.Add(new RadCalendarDay(new DateTime(2014,7, 15))); this.radCalendar1.SpecialDays[0].Disabled = true; 2. When set the Selected and Selectable to false, the special day is still can select and highlight this.radCalendar1.SpecialDays[0].Selected = false; this.radCalendar1.SpecialDays[0].Selectable = false;
Meanwhile, you can workaround this by resetting the property every time you change the number of months that RadCalendar displays. This is shown in the next code snippet: private void radPageViewPage2_ClientSizeChanged(object sender, EventArgs e) { int numViews = this.radPageViewPage2.Size.Height / 240 + 1; radCalendar1.MultiViewRows = numViews; radCalendar1.ShowFastNavigationButtons = true; radCalendar1.ShowFastNavigationButtons = false; }
When a RadRichTextBox control is added as a child to RadCalendar, the Space and Enter key input is stolen by the calendar. Workaround is available here: http://www.telerik.com/community/forums/getting-visible-dates-from-radcalendar
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.
To reproduce: use the following code snippet: public Form1() { InitializeComponent(); this.radCalendar1.AllowMultipleView = true; this.radCalendar1.MultiViewRows = 3; this.radCalendar1.MultiViewColumns = 4; this.radCalendar1.AllowMultipleSelect = true; this.radCalendar1.ShowRowHeaders = true; this.radCalendar1.ShowColumnHeaders = true; this.radCalendar1.AllowColumnHeaderSelectors = true; this.radCalendar1.AllowRowHeaderSelectors = true; this.radCalendar1.ShowViewSelector = true; this.radCalendar1.AllowViewSelector = true; this.radCalendar1.RangeMinDate = new DateTime(2014, 3, 3); this.radCalendar1.RangeMaxDate = new DateTime(2014, 7, 27); this.radCalendar1.FocusedDate = new DateTime(2014, 5, 5); } Please refer to the attached gif file. Workaround: private void Calendar_MouseDown(object sender, MouseEventArgs e) { CalendarCellElement cell = this.radCalendar1.CalendarElement.ElementTree.GetElementAtPoint(e.Location) as CalendarCellElement; if (cell != null && cell.Date < this.radCalendar1.RangeMinDate && (bool)cell.GetValue(CalendarCellElement.IsHeaderCellProperty) == true) { foreach (MonthViewElement monthView in this.radCalendar1.CalendarElement.CalendarVisualElement.Children[0].Children.Last().Children) { { foreach (CalendarCellElement monthCell in monthView.TableElement.Children) { if (monthCell.Date.Month == cell.Date.Month && monthCell.Date.Year == cell.Date.Year && this.radCalendar1.RangeMinDate <= monthCell.Date)// && // (bool)cell.GetValue(CalendarCellElement.IsHeaderCellProperty) == false) { if (char.IsLetter(cell.Text[0])) { //perform column selection if (monthCell.ControlBoundingRectangle.X == cell.ControlBoundingRectangle.X) { this.radCalendar1.SelectedDates.Add(monthCell.Date); } } else { //perform row selection if (monthCell.ControlBoundingRectangle.Y == cell.ControlBoundingRectangle.Y) { this.radCalendar1.SelectedDates.Add(monthCell.Date); } } } } } } } }
ADD. RadCalendar's TodayButton does not accept shortcuts.
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";
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.
Currently the user cannot remove the FocusedDate of RadCalendar.
IMPROVE. RadCalendar - expose the RefreshVisuals method of the CalendarElement
To reproduce: use the following code snippet: public Form1() { InitializeComponent(); this.radCalendar1.AllowMultipleView = true; this.radCalendar1.MultiViewRows = 3; this.radCalendar1.HeaderNavigationMode = Telerik.WinControls.UI.HeaderNavigationMode.Zoom; }
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
Allow RadCalendar to have multiview based on years or months. Resolution: With our latest release(Q2 2014) we are introducing new navigation mode that has very similar behavior the described one. To take the advantages of new mode you need only to set the HeaderNavigationMode property to "Zoom": For example : this.radCalendar1.HeaderNavigationMode = HeaderNavigationMode.Zoom;
Adding the following method CalendardDayCollection.AddRange(IEnumerable Of Date) is an easy way to populate the collection
RadCalendar should support month selection. I.e, the end-user should be able to press a single button, and all the cells from the current month should become selected. Resolution: #1 This behavior could be achieved very easy with current API, so we are thinking that there is no need to implement it in our RadCalendar as embedded functionality. For example: C# this.radCalendar1.AllowMultipleSelect = true; for (int i = 1; i <= DateTime.DaysInMonth(DateTime.Now.Year,DateTime.Now.Month); i++) { this.radCalendar1.SelectedDates.Add(new DateTime(DateTime.Now.Year, DateTime.Now.Month, i)); } VB Me.radCalendar1.AllowMultipleSelect = True For i As Integer = 1 To DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) Me.radCalendar1.SelectedDates.Add(New DateTime(DateTime.Now.Year, DateTime.Now.Month, i)) Next #2 You can set ShowOtherMonthsDays to false and use ViewSelector. For example: C# this.radCalendar1.AllowMultipleSelect = true; this.radCalendar1.AllowViewSelector = true; this.radCalendar1.ShowViewSelector = true; this.radCalendar1.ShowOtherMonthsDays = false; VB Me.radCalendar1.AllowMultipleSelect = True Me.radCalendar1.AllowViewSelector = True Me.radCalendar1.ShowViewSelector = True Me.radCalendar1.ShowOtherMonthsDays = False
The event should fire so one can customize the appearance on loading.
Although RadCalendarDay has a Tooltip property, it does not show any tooltips.