To reproduce:
public RadForm1()
{
InitializeComponent();
BindingList<Item> items = new BindingList<Item>();
items.Add(new Item(0,"Root", CheckState.Checked,-1));
for (int i = 1; i < 5; i++)
{
items.Add(new Item(i, "Node" + i, CheckState.Checked,0));
}
this.radTreeView1.CheckBoxes = true;
this.radTreeView1.DisplayMember = "Name";
this.radTreeView1.ChildMember = "Id";
this.radTreeView1.ParentMember = "ParentId";
this.radTreeView1.CheckedMember = "IsActive";
this.radTreeView1.AutoCheckChildNodes = true;
this.radTreeView1.TriStateMode = true;
this.radTreeView1.DataSource = items;
this.radTreeView1.ExpandAll();
}
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
public CheckState IsActive { get; set; }
public int ParentId { get; set; }
public Item(int id, string name, CheckState isActive, int parentId)
{
this.Id = id;
this.Name = name;
this.IsActive = isActive;
this.ParentId = parentId;
}
}
Workaround: implement a TypeConverter that can handle converting from/to System.Windows.Forms.CheckState. A sample implementation for creating a custom TypeConverter is demonstrated in the following help article: https://docs.telerik.com/devtools/winforms/treeview/data-binding/togglestateconverter