To reproduce: public RadForm1() { InitializeComponent(); DataSet ds = new DataSet(); DataTable dt = new DataTable(); dt.TableName = "Tasks"; dt.Columns.Add("Id"); dt.Columns.Add("ParentID"); dt.Columns.Add("Title"); dt.Columns.Add("Start", typeof(DateTime)); dt.Columns.Add("End", typeof(DateTime)); dt.Rows.Add("1", "", "Item1", new DateTime(2018,03,16), new DateTime(2018,03,20)); dt.Rows.Add("2", "1", "child", new DateTime(2018,03,16), new DateTime(2018,03,17)); dt.Rows.Add("3", "", "Item2", new DateTime(2018,03,16), new DateTime(2018,03,20)); ds.Tables.Add(dt); this.radGanttView1.GanttViewElement.TaskDataMember = "Tasks"; this.radGanttView1.GanttViewElement.ChildMember = "Id"; this.radGanttView1.GanttViewElement.ParentMember = "ParentId"; this.radGanttView1.GanttViewElement.TitleMember = "Title"; this.radGanttView1.GanttViewElement.StartMember = "Start"; this.radGanttView1.GanttViewElement.EndMember = "End"; this.radGanttView1.GanttViewElement.DataSource = ds; this.radGanttView1.Columns.Add("Start"); this.radGanttView1.Columns.Add("End"); this.radGanttView1.GanttViewElement.GraphicalViewElement.TimelineStart = new DateTime(2018,03,10); this.radGanttView1.GanttViewElement.GraphicalViewElement.TimelineEnd = new DateTime(2018,03,31); //"child" item is readonly radGanttView1.Items[0].ReadOnly = true; } Workaround: public class CustomBaseGanttViewBehavior : BaseGanttViewBehavior { protected override void ProcessMouseDownOnTaskElement(GanttGraphicalViewBaseTaskElement element, MouseEventArgs e) { GanttGraphicalViewBaseItemElement taskItem = element.Parent as GanttGraphicalViewBaseItemElement; if (e.Button == MouseButtons.Left && !taskItem.Data.ReadOnly) { base.ProcessMouseDownOnTaskElement(element, e); } } }