Unplanned
Last Updated: 04 Oct 2016 08:12 by ADMIN
To reproduce:

this.radScheduler1.ActiveViewType = SchedulerViewType.Month;
for (int i = 0; i < 10; i++)
{
    this.radScheduler1.Appointments.Add(new Appointment(DateTime.Now.AddHours(i),TimeSpan.FromMinutes(30),"A"+i));
}
 
Scroll to the bottom and try to select an appointment. You will notice that selection is not possible. The attached gif file illustrates the incorrect behavior. 

Workaround: use the overflow button by setting the SchedulerMonthView.EnableCellOverflowButton property to true:
SchedulerMonthView monthView = this.radScheduler1.GetMonthView();
 monthView.EnableCellOverflowButton = true;
Unplanned
Last Updated: 04 Oct 2016 08:11 by ADMIN
Please refer to the attached screenshot.

Workaround:

public Form1()
{
    InitializeComponent(); 

    this.radScheduler1.ElementProvider = new MyElementProvider(this.radScheduler1);
}

public class MyElementProvider : SchedulerElementProvider
{
    public MyElementProvider(RadScheduler scheduler) : base(scheduler)
    {
    }

    protected override T CreateElement<T>(SchedulerView view, object context)
    {
        if (typeof(T) == typeof(AppointmentElement))
        {
            return new CustomAppointmentElement(this.Scheduler, view, (IEvent)context)as T;
        }

        return base.CreateElement<T>(view, context);
    }
}

public class CustomAppointmentElement : AppointmentElement
{
    protected override Type ThemeEffectiveType     
    { 
        get    
        { 
            return typeof(AppointmentElement);     
        }
    }

    public CustomAppointmentElement(RadScheduler scheduler,
        SchedulerView view, IEvent appointment) : base(scheduler, view, appointment)
    {
    }

    protected override SizeF ArrangeOverride(SizeF finalSize)
    {
        SizeF s = base.ArrangeOverride(finalSize);
        return new SizeF(s.Width - 5,s.Height);
    }
}
Completed
Last Updated: 04 Oct 2016 07:41 by ADMIN
To reproduce:

public Form1()
{
    InitializeComponent();
    this.radScheduler1.ActiveViewType = Telerik.WinControls.UI.SchedulerViewType.Month;

    CultureInfo culture = new CultureInfo("en-US");
    culture.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Monday;
    this.radScheduler1.Culture = culture;
   
    Appointment a = new Appointment(new DateTime(2016, 8, 29, 0, 0, 0), new DateTime(2016, 9, 5, 0, 0, 0), "Meeting");

    this.radScheduler1.Appointments.Add(a);

    this.radScheduler1.FocusedDate = new DateTime(2016, 9, 1);

    this.radScheduler1.EnableExactTimeRendering = true;
}

When you run the application starting scrolling with the mouse wheel up/down.

Workaround: do not set the FirstDayOfWeek to Monday.
Completed
Last Updated: 12 Sep 2016 05:33 by ADMIN
Note: If you open the context menu over a recurring  appointment and select "Edit Appointment", when the EditAppointmentDialogis shown, the EditRecurrenceDialog is shown as well. But when the EditAppointmentDialog is shown by double clicking, the EditRecurrenceDialog  is not opened at all.

Workaround:
 this.radScheduler1.SchedulerInputBehavior = new CustomBehavior(this.radScheduler1);

public class CustomBehavior : SchedulerInputBehavior
{ 
    public CustomBehavior(RadScheduler scheduler) : base(scheduler)
    {
    }

    public override bool HandleAppointmentElementDoubleClick(object sender, EventArgs args)
    {
        MouseEventArgs mouseArgs = args as MouseEventArgs;
        if (mouseArgs == null || mouseArgs.Button != MouseButtons.Left)
        {
            return false;
        }
        FieldInfo fi = typeof(SchedulerInputBehavior).GetField("beginEditTimer", BindingFlags.NonPublic| BindingFlags.Instance);
        Timer beginEditTimer = fi.GetValue(this) as Timer;
        beginEditTimer.Stop();

        if (!this.Scheduler.ReadOnly && sender is AppointmentElement)
        {
            AppointmentElement app = sender as AppointmentElement; 
            this.Scheduler.ShowAppointmentEditDialog(app.Appointment, app.Appointment.MasterEvent != null);
        }

        return false;
    }
}
Unplanned
Last Updated: 05 Aug 2016 09:14 by ADMIN
To reproduce:

Public Class Form1
    Sub New()
         
        InitializeComponent()

        Me.RadScheduler1.EnableExactTimeRendering = True
        
        Dim dt = DateTime.Now
        Me.RadScheduler1.Appointments.Add(New Appointment(dt.AddMinutes(-10).AddSeconds(1), Now, "A1"))
        Me.RadScheduler1.Appointments.Add(New Appointment(dt.AddMinutes(-15), DateTime.Now.AddMinutes(-10), "A2"))
        Me.RadScheduler1.GetTimelineView().StartDate = DateAdd(DateInterval.Minute, -15, Now)

        Dim customScale As CustomTimescalePerMinute = New CustomTimescalePerMinute()
        Dim timelineView As SchedulerTimelineView = Me.RadScheduler1.GetTimelineView()
        timelineView.SchedulerTimescales.Add(customScale)

        timelineView.ShowTimescale(customScale)
        Dim currentScaling As SchedulerTimescale = timelineView.GetScaling()
        currentScaling.DisplayedCellsCount = 15
    End Sub
End Class

Public Class CustomTimescalePerMinute
Inherits MinutesTimescale
    Public Overrides ReadOnly Property ScalingFactor() As Integer
        Get
            Return 1
        End Get
    End Property
End Class

Note: the attached gif file illustrates the behavior. Initially, the first appointment's end is not rendered in the correct time slot. After scrolling, it is displayed correctly.

Workaround: force scrolling

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim t As SchedulerTimelineViewElement = TryCast(Me.RadScheduler1.SchedulerElement.ViewElement, SchedulerTimelineViewElement)
    Dim value = t.NavigationElement.Value
    t.NavigationElement.Value += 1
    Me.RadScheduler1.SchedulerElement.RefreshViewElement()
    t.NavigationElement.Value = value
End Sub
Declined
Last Updated: 05 Aug 2016 07:46 by ADMIN
In RadScheduler I have appointment with End set to new DateTime(9999, 12, 22) (or greater). When I switch to Month view the exception is thrown:

The added or subtracted value results in an un-representable DateTime.

Found in version: 2016.2.608.40
It was working in version:  2013.2.724.40
Unplanned
Last Updated: 05 Aug 2016 07:46 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 1
Category: Scheduler/Reminder
Type: Bug Report
0
To reproduce:

 public Form1()
 {
     InitializeComponent();

     this.radScheduler1.ActiveViewType = SchedulerViewType.Month;
     this.radScheduler1.Appointments.Add(new Appointment(new DateTime(9999,12,22),TimeSpan.FromMinutes(30),"A1"));
 }
 
Completed
Last Updated: 29 Jul 2016 11:13 by Carl
To reproduce:
Resource lResource;
var LColors = new Color[5];
SchedulerMultiDayView multyDayView;
DateTime startDate;

int interval;

radScheduler1.Statuses.Add(new AppointmentStatusInfo(5, "New", Color.Green, Color.Green, AppointmentStatusFillType.Solid));
radScheduler1.Statuses.Add(new AppointmentStatusInfo(6, "ACCP", Color.DarkOrange, Color.DarkOrange, AppointmentStatusFillType.Solid));


lResource = new Resource();
lResource.Id = new EventId(1);
lResource.Name = "Bert";
lResource.Color = Color.Red;

radScheduler1.Resources.Add(lResource);

radScheduler1.ActiveView.ShowHeader = true;

this.radScheduler1.ActiveViewType = SchedulerViewType.MultiDay;
multyDayView = this.radScheduler1.GetMultiDayView();

startDate = DateTime.Today;
interval = 30;

radScheduler1.GroupType = GroupType.Resource;
multyDayView.Intervals.Add(startDate, interval);

multyDayView.RulerScaleSize = 4;
radScheduler1.EnableExactTimeRendering = true;

multyDayView.RangeFactor = ScaleRange.Hour;
Unplanned
Last Updated: 11 Jul 2016 08:31 by ADMIN
To reproduce:

RadScheduler radScheduler1 = new RadScheduler();

public Form1()
{
    InitializeComponent();
    this.Controls.Add(this.radScheduler1);
    this.radScheduler1.Dock = DockStyle.Fill;

    Timer timer = new Timer();
    timer.Interval = 1000;
    timer.Tick += timer_Tick;
    this.radScheduler1.ActiveViewType = SchedulerViewType.Timeline;
    SetupView(DateTime.Now.Date);
    timer.Start();
}

private void SetupView(DateTime currentDateTime)
{
    SchedulerTimelineView timelineView = radScheduler1.GetTimelineView();
   
    timelineView.RangeStartDate = currentDateTime;
    timelineView.RangeEndDate = currentDateTime.AddHours(23).AddMinutes(59).AddSeconds(59);
    timelineView.StartDate = currentDateTime;
    radScheduler1.FocusedDate = currentDateTime;
    var scale = Timescales.Hours;
    timelineView.ShowTimescale(scale);
    var currentScaling = timelineView.GetScaling();
    currentScaling.DisplayedCellsCount = 24;

    this.radScheduler1.SchedulerElement.RefreshViewElement();
}

int count = 1;
private void timer_Tick(object sender, EventArgs e)
{
    SetupView(DateTime.Now.AddDays(++count));
}

Workaround: SchedulerTimelineView .ShowNavigationElement = false;
Unplanned
Last Updated: 11 Jul 2016 08:29 by ADMIN
To reproduce:

public RadRibbonForm1() 
{
    InitializeComponent();

    this.radScheduler1.FocusedDate = new DateTime(2016, 1, 1);
    this.radScheduler1.ActiveViewType = Telerik.WinControls.UI.SchedulerViewType.Timeline;
    SchedulerTimelineView timelineView = this.radScheduler1.GetTimelineView();       
    timelineView.RangeStartDate = new DateTime(2016, 1, 1, 00, 00, 00);
    timelineView.RangeEndDate = new DateTime(2016, 12, 31, 23, 59, 59);
    timelineView.StartDate = new DateTime(2016, 1, 1, 00, 00, 00);

    Appointment appointment = new Appointment(new DateTime(2016, 1, 1, 00, 00, 00), new DateTime(2016, 1, 10, 00, 00, 00), "Quarter 1");
    Appointment appointment2 = new Appointment(new DateTime(2016, 2, 1, 00, 00, 00), new DateTime(2016, 2, 10, 00, 00, 00), "Quarter 1");
    Appointment appointment3 = new Appointment(new DateTime(2016, 4, 1, 00, 00, 00), new DateTime(2016, 4, 10, 00, 00, 00), "Quarter 2");
    Appointment appointment4 = new Appointment(new DateTime(2016, 5, 1, 00, 00, 00), new DateTime(2016, 6, 10, 00, 00, 00), "Quarter 2");
    Appointment appointment5 = new Appointment(new DateTime(2016, 7, 1, 00, 00, 00), new DateTime(2016, 7, 10, 00, 00, 00), "Quarter 3");
    Appointment appointment6 = new Appointment(new DateTime(2016, 8, 1, 00, 00, 00), new DateTime(2016, 8, 10, 00, 00, 00), "Quarter 3");
    Appointment appointment7 = new Appointment(new DateTime(2016, 11, 1, 00, 00, 00), new DateTime(2016, 11, 10, 00, 00, 00), "Quarter 4");
    Appointment appointment8 = new Appointment(new DateTime(2016, 12, 1, 00, 00, 00), new DateTime(2016, 12, 10, 00, 00, 00), "Quarter 4");

    this.radScheduler1.Appointments.Add(appointment);
    this.radScheduler1.Appointments.Add(appointment2);
    this.radScheduler1.Appointments.Add(appointment3);
    this.radScheduler1.Appointments.Add(appointment4);
    this.radScheduler1.Appointments.Add(appointment5);
    this.radScheduler1.Appointments.Add(appointment6);
    this.radScheduler1.Appointments.Add(appointment7);
    this.radScheduler1.Appointments.Add(appointment8);

    QuarterTimescale qTimeScale = new QuarterTimescale(); 
    qTimeScale.DisplayedCellsCount = 4;
    timelineView.SchedulerTimescales.Add(qTimeScale);
    this.radScheduler1.GetTimelineView().ShowTimescale(qTimeScale); 
}

class QuarterTimescale : MonthTimescale
{
    public override int ScalingFactor
    {
        get
        {
            return 3;
        }
    }

    public override string Name
    {
        get
        {
            return "Quarter";
        }
    }
}
Completed
Last Updated: 29 Jun 2016 06:36 by ADMIN
To reproduce:
DateTime dtStart = DateTime.Today.AddDays(2).AddHours(10); 
DateTime dtEnd = DateTime.Today.AddDays(2).AddHours(12); 
Appointment appointment = new Appointment(dtStart, dtEnd, "TEST", "Description"); 
this.radScheduler1.Appointments.Add(appointment); 

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ar-SA");

Try to open the edit dialog.


Workaround: create a custom dialog that inherits  RadSchedulerDialog and implements IEditAppointmentDialog. Thus, you will be able to handle the whole edit operation.

public class Scheduler : RadScheduler
{
    protected override IEditAppointmentDialog CreateAppointmentEditDialog()
    {
        return new MyDialog();
    }

    public override string ThemeClassName  
    { 
        get 
        { 
            return typeof(RadScheduler).FullName;  
        }
    }
}

public partial class MyDialog : RadSchedulerDialog, IEditAppointmentDialog
{
    public MyDialog()
    {
        InitializeComponent();
    }

    Appointment appointment;

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e); 

        //an example how specify the start date
        RadDateTimePicker dtStart = this.Controls[0] as RadDateTimePicker;
        dtStart.Value = this.appointment.Start;
    }
   
    public void ShowRecurrenceDialog()
    {
        //ToDo
    }

    public bool EditAppointment(Telerik.WinControls.UI.IEvent appointment, Telerik.WinControls.UI.ISchedulerData schedulerData)
    {
        this.appointment = appointment as Appointment;

        return true;
    }
}
Completed
Last Updated: 14 Jun 2016 10:53 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
1
To reproduce: Open Demo application >> Scheduler >> Printing example. Add two appointments one of which is with duration 1 hour, the other one lasts 2 hours. When you click the PrintPreview button, the shorter appointment is missing.

Workaround:
public Form1()
{
    InitializeComponent();

    this.radScheduler1.PrintStyle = new CustomSchedulerDailyPrintStyle();
}

public class CustomSchedulerDailyPrintStyle :SchedulerDailyPrintStyle
{
    protected override void DrawAppointments(DateTime currentDate, IResource resource, Rectangle appArea, Graphics graphics)
    {
        int rowCount = Math.Max(1, (int)Math.Ceiling((TimeEndRange - TimeSpan.FromHours(TimeStartRange.Hours)).TotalHours));
        float rowHeight = (float)appArea.Height / rowCount;

        List<IEvent> appointments = this.GetAppointments(currentDate, false, resource);

        appointments.Sort(CompareAppointments);
        bool setColumn = true;
        Dictionary<IEvent, int> columns = new Dictionary<IEvent, int>();
        Dictionary<IEvent, int> maxColumns = new Dictionary<IEvent, int>();
        int currentColumn = 0;

        while (setColumn)
        {
            setColumn = false;
            DateTime currentTime = DateTime.MinValue;

            foreach (IEvent app in appointments)
            {
                if (!columns.ContainsKey(app) && DateFloor(app.Start) >= currentTime)
                {
                    setColumn = true;
                    columns.Add(app, currentColumn);
                    currentTime = DateCeiling(app.End);
                }
            }

            currentColumn++;
        }

        DateTime maxEndDate = DateTime.MinValue;
        int lastIndex = 0;
        int maxColumn = 0;

        for (int i = 0; i <= appointments.Count; i++)
        {
            if (i == appointments.Count || DateFloor(appointments[i].Start) >= maxEndDate)
            {
                for (int j = lastIndex; j < i; j++)
                {
                    maxColumns.Add(appointments[j], maxColumn);
                }

                maxColumn = 0;
                lastIndex = i;
            }

            if (i == appointments.Count)
            {
                break;
            }

            maxColumn = Math.Max(maxColumn, columns[appointments[i]]);
            if (maxEndDate < DateCeiling(appointments[i].End))
            {
                maxEndDate = DateCeiling(appointments[i].End);
            }
        }

        foreach (IEvent app in appointments)
        {
            AppointmentPrintElement printedAppointment = new AppointmentPrintElement(app, this.Scheduler);
            printedAppointment.ShowHours = false;
            printedAppointment.DrawBorder = printedAppointment.DrawFill = true;

            float appY = appArea.Y + Math.Max(0, (float)(((DateFloor(printedAppointment.Start) - currentDate.Add(this.TimeStartRange)).TotalHours) * rowHeight));
            float appBottom = appArea.Y + Math.Min(appArea.Height, (float)(((DateCeiling(printedAppointment.End) - currentDate.Add(this.TimeStartRange)).TotalHours) * rowHeight));
            float appHeight = appBottom - appY - app.End.Minute;
            float appWidth = (appArea.Width - HoursColumnWidth) / (maxColumns[app] + 1);
            float appX = appArea.X + HoursColumnWidth + columns[app] * appWidth;
            
            RectangleF appRect = new RectangleF(appX, appY, appWidth, appHeight);
            appRect.Inflate(-2f, -2f);
            this.DrawAppointment(printedAppointment, graphics, appRect);
        }
    }
}
Completed
Last Updated: 09 Jun 2016 07:26 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
2
To reproduce: follow the steps from the attached gif file.

Workaround:

public Form1()
{
    InitializeComponent();
    this.radScheduler1.RecurrenceEditDialogShowing += radScheduler1_RecurrenceEditDialogShowing;
}

CustomEditRecurrenceDialog dialog = null;

private void radScheduler1_RecurrenceEditDialogShowing(object sender, Telerik.WinControls.UI.RecurrenceEditDialogShowingEventArgs e)
{
    if (dialog == null)
    {
        dialog = new CustomEditRecurrenceDialog(e.Appointment);
    }
    e.RecurrenceEditDialog = dialog;
}

public class CustomEditRecurrenceDialog : EditRecurrenceDialog
{
    public CustomEditRecurrenceDialog(IEvent appointment) : base(appointment)
    {
    }

    protected override void ApplyAppointmentDates()
    {
        DateTime end = this.appointment.End;
        base.ApplyAppointmentDates();
        this.appointment.End = new DateTime(end.Year, end.Month, end.Day,
            this.timeEnd.Value.Hour, this.timeEnd.Value.Minute, this.timeEnd.Value.Second);
    }
}
Unplanned
Last Updated: 06 Jun 2016 13:47 by ADMIN
Please refer to the attached gif file illustrating how to reproduce the problem with the Demo application. When you define a new appointment with 24 months interval, it is expected to have this event every 2 years, not each year.

To reproduce: you can use the following code snippet as well:

MonthlyRecurrenceRule monthlyRecurrenceRule = new MonthlyRecurrenceRule(DateTime.Now, WeekDays.Monday, 2, 24);
Appointment a = new Appointment(DateTime.Now, TimeSpan.FromHours(3), "Test");
a.RecurrenceRule = monthlyRecurrenceRule;
this.radScheduler1.Appointments.Add(a);


Workaround:

 public Form1()
 {
     InitializeComponent();
     
     this.radScheduler1.AppointmentAdded += radScheduler1_AppointmentAdded;
 }

 private void radScheduler1_AppointmentAdded(object sender, AppointmentAddedEventArgs e)
 {
     MonthlyRecurrenceRule montlyRule = e.Appointment.RecurrenceRule as MonthlyRecurrenceRule;
     if (montlyRule != null)
     {
         CustomMonthlyRecurrenceRule rrule = new CustomMonthlyRecurrenceRule();
         rrule.Start = montlyRule.Start;
         rrule.End = montlyRule.End;
         rrule.Interval = montlyRule.Interval;
         rrule.Offset = montlyRule.Offset;
         rrule.WeekDays = montlyRule.WeekDays;
         rrule.WeekNumber = montlyRule.WeekNumber;
         rrule.FirstDayOfWeek = montlyRule.FirstDayOfWeek;
         rrule.Count = montlyRule.Count; 

         e.Appointment.RecurrenceRule = rrule;
     }
 }

 public class CustomMonthlyRecurrenceRule : MonthlyRecurrenceRule
 {
     public override bool MatchAdvancedPattern(DateTime date, DateTimeFormatInfo dateTimeFormat)
     {
         int monthIndex = this.Start.Value.Month - date.Month;
         DateTime calculatedNextDate = this.Start.Value.AddMonths(this.Interval);
         monthIndex = calculatedNextDate.Month - date.Month;
         if (calculatedNextDate.Year > date.Year)
         {
             return false;
         }
         if ((monthIndex % this.Interval) != 0)
         {
             return false;
         }

         if (0 != this.WeekNumber && !this.MatchWeekOfMonth(date, dateTimeFormat))
         {
             return false;
         }

         if (0 != this.DayNumber && !this.MatchDayOfMonth(date, dateTimeFormat))
         {
             return false;
         }

         if (this.WeekDays != WeekDays.None && !this.MatchDayOfWeekMask(date, dateTimeFormat.Calendar))
         {
             return false;
         }

         if (this.Offset != 0 && !this.MatchOffset(date, dateTimeFormat))
         {
             return false;
         }

         return true;
     }
 }

Completed
Last Updated: 26 May 2016 09:24 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
0
Please refer to the attached gif file.
Completed
Last Updated: 06 May 2016 14:05 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
0
public Form1()
{
    InitializeComponent();
    DateTime d = DateTime.Now.Date; 
    radScheduler1.Appointments.Add(new Appointment(new DateTime(d.Year, d.Month, d.Day, 1, 30, 0), new DateTime(d.Year, d.Month, d.Day, 1, 30, 0), "Appointment_Free_0", "", ""));
    radScheduler1.Appointments.Add(new Appointment(new DateTime(d.Year, d.Month, d.Day, 8, 30, 0), new DateTime(d.Year, d.Month, d.Day, 9, 0, 0), "Appointment_Free_0", "", ""));
    radScheduler1.Appointments.Add(new Appointment(new DateTime(d.Year, d.Month, d.Day, 11, 00, 0), new DateTime(d.Year, d.Month, d.Day, 11, 30, 0), "Appointment_Free_0", "", ""));

    radScheduler1.Appointments.Add(new Appointment(new DateTime(d.Year, d.Month, d.Day, 11, 0, 0), new DateTime(d.Year, d.Month, d.Day, 11, 0, 0), "Appointment_Free_0", "", ""));
    radScheduler1.Appointments.Add(new Appointment(new DateTime(d.Year, d.Month, d.Day, 10, 30, 0), new DateTime(d.Year, d.Month, d.Day, 11, 0, 0), "Appointment_Free_0", "", ""));
    radScheduler1.Appointments.Add(new Appointment(new DateTime(d.Year, d.Month, d.Day, 11, 00, 0), new DateTime(d.Year, d.Month, d.Day, 11, 30, 0), "Appointment_Free_0", "", ""));
    radScheduler1.Appointments.Add(new Appointment(new DateTime(d.Year, d.Month, d.Day, 11, 30, 0), new DateTime(d.Year, d.Month, d.Day, 12, 0, 0), "Appointment_Free_0", "", ""));
    radScheduler1.Appointments.Add(new Appointment(new DateTime(d.Year, d.Month, d.Day, 14, 0, 0), new DateTime(d.Year, d.Month, d.Day, 14, 30, 0), "Appointment_Free_0", "", ""));
    radScheduler1.Appointments.Add(new Appointment(new DateTime(d.Year, d.Month, d.Day, 15, 00, 0), new DateTime(d.Year, d.Month, d.Day, 15, 30, 0), "Appointment_Free_0", "", ""));

    radScheduler1.Appointments.Add(new Appointment(new DateTime(d.Year, d.Month, d.Day, 17, 30, 0), new DateTime(d.Year, d.Month, d.Day, 17, 30, 0), "Appointment_Free_0", "", ""));

    radScheduler1.ActiveViewType = SchedulerViewType.Day;

    radScheduler1.EnableExactTimeRendering = true;
}


Workaround: use a custom DayViewAppointmentsTable

 this.radScheduler1.ElementProvider = new MyElementProvider(this.radScheduler1);

public class MyElementProvider : SchedulerElementProvider
{
    public MyElementProvider(RadScheduler scheduler) : base(scheduler)
    {
    }

    protected override T CreateElement<T>(SchedulerView view, object context)
    {
        if (typeof(T) == typeof(DayViewAppointmentsTable))
        {
            return new CustomDayViewAppointmentsTable(view.Scheduler, view, (DayViewAppointmentsArea)context)as T;
        }

        return base.CreateElement<T>(view, context);
    }
}

public class CustomDayViewAppointmentsTable : DayViewAppointmentsTable
{
    public CustomDayViewAppointmentsTable(RadScheduler scheduler, SchedulerView view, DayViewAppointmentsArea area) : base(scheduler, view, area)
    {
    }
    
    protected override IEnumerable<AppointmentElement> CreateAppointmentElements()
    {
        if (this.View != null)
        {
            IList<IEvent> appointmentsInView = new List<IEvent>(this.View.Appointments);
            List<AppointmentElement> elements = DivideAppointmentToElements(appointmentsInView);
            elements.Sort(0, elements.Count, new DateTimeComparer(this.Scheduler));

            foreach (AppointmentElement currentAppointment in elements)
            {
                currentAppointment.RelatedAppointments.Clear();
                currentAppointment.DesiredBounds = new RectangleF();
            }

            foreach (AppointmentElement appointment in elements)
            {
                List<AppointmentElement> intersectingAppointments = this.GetAllAppointmentsInDay(appointment.Start.Day, elements);
                intersectingAppointments.Remove(appointment);
                appointment.RelatedAppointments = intersectingAppointments;
            }

            return elements;
        }
        else
        {
            return new List<AppointmentElement>();
        }
    }

    private List<AppointmentElement> GetAllAppointmentsInDay(int day, List<AppointmentElement> elements)
    {
        List<AppointmentElement> result = new List<AppointmentElement>();
        foreach (AppointmentElement appointment in elements)
        {
            if (appointment.Start.Day == day)
            {
                result.Add(appointment);
            }
        }

        return result;
    }

    private List<AppointmentElement> DivideAppointmentToElements(IList<IEvent> appointmentsInView)
    {
        List<AppointmentElement> childAppointments = new List<AppointmentElement>();
        TimeSpan startTime = TimeSpan.FromMinutes(this.GetDayViewBase().RulerStartScale * 60 + this.GetDayViewBase().RulerStartScaleMinutes);
        TimeSpan endTime = TimeSpan.FromMinutes(this.GetDayViewBase().RulerEndScale * 60 + this.GetDayViewBase().RulerEndScaleMinutes);

        foreach (IEvent app in appointmentsInView)
        {
            SchedulerDayViewBase dayView = this.GetDayViewBase();
            bool allDay = (dayView != null) ? dayView.IsAllDayEvent(app) : false;

            DateTime appStart = this.View.DefaultTimeZone.OffsetTime(app.Start, this.Scheduler.SystemTimeZone);
            DateTime appEnd = this.View.DefaultTimeZone.OffsetTime(app.End, this.Scheduler.SystemTimeZone);

            if (!allDay)
            {
                // Handle > 1 day appointments
                if (appStart.Day != appEnd.Day && !(appEnd.Day - appStart.Day == 1 && appEnd.TimeOfDay == TimeSpan.Zero))
                {
                    AppointmentElement appointment1 = this.CreateAppointmentElement(this.Scheduler, this.View, app);
                    appointment1.Start = appStart;
                    appointment1.End = DateHelper.GetEndOfDay(appStart);

                    if (appointment1.Start.TimeOfDay >= endTime)
                    {
                        appointment1.Start = new DateTime(appStart.Year, appStart.Month, 
                            appStart.Day, 0, 0, 0).Add(endTime).AddMinutes(-(int)this.GetDayViewBase().RangeFactor);
                    }

                    AppointmentElement appointment2 = this.CreateAppointmentElement(this.Scheduler, this.View, app);
                    appointment2.Start = appEnd.Date;
                    appointment2.End = appEnd;

                    if (appointment1.Start >= this.View.StartDate)
                    {
                        childAppointments.Add(appointment1);
                    }

                    if (appointment2.Start >= this.View.StartDate)
                    {
                        childAppointments.Add(appointment2);
                    }
                }
                else
                {
                    AppointmentElement appointment1 = this.CreateAppointmentElement(this.Scheduler, this.View, app);
                    appointment1.Start = appStart;
                    appointment1.End = appEnd;

                    if (appointment1.Start.TimeOfDay < startTime)
                    {
                        appointment1.Start = new DateTime(appStart.Year, appStart.Month, appStart.Day, 0, 0, 0).Add(startTime);
                    }

                    if (appointment1.Start.TimeOfDay >= endTime)
                    {
                        appointment1.Start = new DateTime(appStart.Year, appStart.Month, appStart.Day, 0,
                            0, 0).Add(endTime).AddMinutes(-(int)this.GetDayViewBase().RangeFactor);
                    }

                    if (appointment1.End.TimeOfDay > endTime)
                    {
                        appointment1.End = new DateTime(appEnd.Year, appEnd.Month, appEnd.Day, 0, 0, 0).Add(endTime);
                    }

                    if (appointment1.End.TimeOfDay <= startTime)
                    {
                        appointment1.End = new DateTime(appEnd.Year, appEnd.Month, appEnd.Day, 0, 0,
                            0).Add(startTime).AddMinutes((int)this.GetDayViewBase().RangeFactor);
                    }

                    childAppointments.Add(appointment1);
                }
            }
            else if (!dayView.ShowAllDayArea)
            {
                DateTimeInterval viewInterval = new DateTimeInterval(this.View.StartDate, DateHelper.GetEndOfDay(this.View.EndDate));

                AppointmentElement appointment1 = this.CreateAppointmentElement(this.Scheduler, this.View, app);
                appointment1.Start = appStart;
                appointment1.End = DateHelper.GetEndOfDay(appStart);

                DateTimeInterval interval = new DateTimeInterval(appStart, appointment1.End);
                if (interval.IntersectsWith(viewInterval))
                {
                    if (appointment1.Start.TimeOfDay < startTime)
                    {
                        appointment1.Start = new DateTime(appStart.Year, appStart.Month, appStart.Day, 0, 0, 0).Add(startTime);
                    }

                    if (appointment1.Start.TimeOfDay >= endTime)
                    {
                        appointment1.Start = new DateTime(appStart.Year, appStart.Month, appStart.Day, 0, 0,
                            0).Add(endTime).AddMinutes(-(int)this.GetDayViewBase().RangeFactor);
                    }

                    if (appointment1.End.TimeOfDay > endTime)
                    {
                        appointment1.End = new DateTime(appEnd.Year, appEnd.Month, appEnd.Day, 0, 0, 0).Add(endTime);
                    }

                    if (appointment1.End.TimeOfDay <= startTime)
                    {
                        appointment1.End = new DateTime(appEnd.Year, appEnd.Month, appEnd.Day, 0, 0,
                            0).Add(startTime).AddMinutes((int)this.GetDayViewBase().RangeFactor);
                    }

                    childAppointments.Add(appointment1);
                }

                DateTime startDate = appStart.AddDays(1).Date;
                AppointmentElement appointment2 = null;

                while (startDate <= appEnd.Date.AddDays(-1))
                {
                    appointment2 = this.CreateAppointmentElement(this.Scheduler, this.View, app);
                    appointment2.Start = startDate;
                    appointment2.End = DateHelper.GetEndOfDay(startDate);
                    interval = new DateTimeInterval(appointment2.Start, appointment2.End);
                    if (interval.IntersectsWith(viewInterval))
                    {
                        childAppointments.Add(appointment2);
                    }
                    startDate = startDate.AddDays(1);
                }

                DateTime endDate = appEnd.Date;
                DateTime endAppointmentDate = appEnd;
                appointment2 = this.CreateAppointmentElement(this.Scheduler, this.View, app);
                appointment2.Start = endDate;
                appointment2.End = endAppointmentDate;

                interval = new DateTimeInterval(endDate, endAppointmentDate);
                if (interval.IntersectsWith(viewInterval) && interval.Start != appStart)
                {
                    childAppointments.Add(appointment2);
                }
            }
        }

        return childAppointments;
    }

    private AppointmentElement CreateAppointmentElement(RadScheduler scheduler, SchedulerView view, IEvent appointment)
    {
        AppointmentElement appointmentElement = null;
        if (scheduler.AppointmentElementFactory != null)
        {
            appointmentElement = scheduler.AppointmentElementFactory.CreateAppointmentElement(scheduler, view, appointment);
        }
        else
        {
            appointmentElement = scheduler.ElementProvider.GetElement<AppointmentElement>(view, appointment);
        }
        return appointmentElement;
    }
}
Unplanned
Last Updated: 06 May 2016 06:11 by ADMIN
To reproduce:

this.radScheduler1.ActiveViewType = Telerik.WinControls.UI.SchedulerViewType.Month;
SchedulerMonthView monthView = this.radScheduler1.GetMonthView();

monthView.WeekCount = 5;
monthView.EnableCellOverflowButton = false;
monthView.EnableAppointmentsScrolling = true;
monthView.ShowVerticalNavigator = false;

for (int i = 0; i < 5; i++)
{
    this.radScheduler1.Appointments.Add(new Appointment(DateTime.Now, TimeSpan.FromDays(2), "Test" + i));
}
for (int i = 5; i < 10; i++)
{
    this.radScheduler1.Appointments.Add(new Appointment(DateTime.Now.AddDays(7), TimeSpan.FromDays(2), "Test" + i));
}
for (int i = 10; i < 15; i++)
{
    this.radScheduler1.Appointments.Add(new Appointment(DateTime.Now.AddDays(14), TimeSpan.FromDays(2), "Test" + i));
}
this.radScheduler1.Appointments.Add(new Appointment(DateTime.Now.AddMinutes(5),TimeSpan.FromDays(8),"Last"));
this.radScheduler1.Appointments.Add(new Appointment(DateTime.Now, TimeSpan.FromDays(14), "A"));
this.radScheduler1.Appointments.Add(new Appointment(DateTime.Now.AddDays(7), TimeSpan.FromDays(20), "B"));

Workaround: use the cell overflow button: SchedulerMonthView.EnableCellOverflowButton=true.
Completed
Last Updated: 12 Apr 2016 12:20 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Bug Report
0
Workaround: use your own icon: 

public Form1()
{
    InitializeComponent();
    this.radScheduler1.RecurrenceEditDialogShowing+=radScheduler1_RecurrenceEditDialogShowing;
}

private void radScheduler1_RecurrenceEditDialogShowing(object sender, Telerik.WinControls.UI.RecurrenceEditDialogShowingEventArgs e)
{
    ((RadForm)e.RecurrenceEditDialog).Icon = Properties.Resources.WinFormsIcon;
}
Completed
Last Updated: 06 Apr 2016 10:30 by ADMIN
ADMIN
Created by: Dimitar
Comments: 0
Category: Scheduler/Reminder
Type: Feature Request
0
Add the ability to display the text  in appointments vertically.
Completed
Last Updated: 06 Apr 2016 10:17 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: Scheduler/Reminder
Type: Feature Request
0
Description: Using the AppointmentFormatting event, setting the AppointmentElement's TextOrientation property  to Vertical should paint the content text in the corresponding orientation.