Completed
Last Updated: 16 Aug 2012 04:16 by ADMIN
To reproduce, use the following code. Once the app starts, expand nodes 1, 5,10, 15 and 19. Scroll to the very bottom and filter the tree:
public partial class Form1 : RadForm
    {
        public Form1()
        {
            InitializeComponent();

     
Completed
Last Updated: 06 Aug 2012 03:55 by ADMIN
To reprodice:
for (int i = 0; i < 20; i++)
{
RadTreeNode node = new RadTreeNode("Node " + i);
node.ToolTipText = "hello " + i;
radTreeView1.Nodes.Add(node);
}
Completed
Last Updated: 23 May 2018 08:42 by Dimitar
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: TreeView
Type: Bug Report
1
To reproduce: please refer to the attached project.

Workaround: if you access the RadTreeNode.TreeViewElement property, the TreeView property is loaded.
Declined
Last Updated: 10 Dec 2018 08:57 by Development
To reproduce: please refer to the attached gif files with the different versions of the Telerik UI for WinForms suite . You will notice that while you are dragging a node the default cursor is an arrow with a small rectangle. If you hold the Ctrl key pressed while dragging  the node, the default cursor is an arrow with a small rectangle and '+'. With the latest version, the '+' sign is missing when you hold the Ctrl key. 
Completed
Last Updated: 05 Feb 2018 09:25 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: TreeView
Type: Bug Report
1
When you start dragging a node you will notice that the drag hint is constantly flickering.
Completed
Last Updated: 07 Sep 2016 15:12 by ADMIN
Start dragging a node and scroll using the mouse wheel. While scrolling, drop the node. 
Completed
Last Updated: 01 Oct 2014 13:03 by ADMIN
To reproduce: 


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


    radTreeView1 = new RadTreeView();
    radTreeView1.Parent = this;


    for (int i = 0; i < 5; i++)
    {
        RadTreeNode n1 = new RadTreeNode("Node" + i);
        this.radTreeView1.Nodes.Add(n1);
        if (i % 2 == 0)
        {
            for (int j = 0; j < 2; j++)
            {
                RadTreeNode n2 = new RadTreeNode("Node" + i + "." + j);
                n1.Nodes.Add(n2);


                if (j % 2 == 0)
                {
                    for (int k = 0; k < 2; k++)
                    {
                        RadTreeNode n3 = new RadTreeNode("Node" + i + "." + j + "." + k);
                        n2.Nodes.Add(n3);
                    }
                }
            }
        }
    }
    radTreeView1.ShowRootLines = false;
    radTreeView1.ShowLines = false;
}


Workaround:

void radTreeView1_NodeFormatting(object sender, TreeNodeFormattingEventArgs e)
{
    if (radTreeView1.ShowLines == false)
    {
        if (e.NodeElement.LinesContainerElement.Children.Count > 0)
        {
            TreeNodeLineElement lineElement = (TreeNodeLineElement)e.NodeElement.LinesContainerElement.Children[0];
            lineElement.Visibility = ElementVisibility.Collapsed;
        }
    }
}
Completed
Last Updated: 18 Nov 2014 11:05 by ADMIN
To reproduce
- Add RadTreeView with some nodes to a blank form.
- Set the MultiSelect property to true.
- Select\Deselect a node with code.
 
Resolution: 
The SelectedNodeChanged event should not be fired when selected/deselected the node programmatically. We added a new event SelectedNodesChanged which is fired when the SelectedNodes collection changes.
Completed
Last Updated: 08 May 2014 12:11 by ADMIN
To reproduce:
- Add treeview to a form and set its AutoScrollOnClick property to false.
- click a node that is not entirely visible with the right mouse button.
- You will notice that the view is auto scrolled.
Completed
Last Updated: 13 Jun 2018 07:09 by Dimitar
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: TreeView
Type: Bug Report
1
For the MS TreeView the HideSelection property gets or sets a value indicating whether the selected tree node remains highlighted even when the tree view has lost the focus. However, it doesn't work in RadTreeView.
Completed
Last Updated: 02 Jun 2014 12:47 by ADMIN
To reproduce:
- Add RadTreeView to a blank form.
- Set its AllowDragDrop and AllowDefaultContextMenu properties to true.
- Clear the menu items in the  ContextMenuOpening event.
- You will notice that the Copy, Cut and Paste items are not removed.

Workaround:
 void radTreeView1_ContextMenuOpening(object sender, Telerik.WinControls.UI.TreeViewContextMenuOpeningEventArgs e)
{
   
    e.Menu.DropDownOpened -= Menu_DropDownOpened; 
    e.Menu.DropDownOpened += Menu_DropDownOpened; 
}

void Menu_DropDownOpened(object sender, EventArgs e)
{
    TreeViewDefaultContextMenu Menu = sender as TreeViewDefaultContextMenu;

    for (int i = Menu.Items.Count - 1; i >= 0; i--)
    {
        if (Menu.Items[i].Name == "Copy" || Menu.Items[i].Name == "Cut" || Menu.Items[i].Name == "Paste")
        {
            Menu.Items.Remove(Menu.Items[i]);
        }
    }
}
Completed
Last Updated: 15 Aug 2017 10:29 by ADMIN
How to reproduce: check the attached project

Workaround: create a custom TreeViewDragDropService
class CustomTreeViewElement : RadTreeViewElement
{
    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(RadTreeViewElement);
        }
    }

    protected override TreeViewDragDropService CreateDragDropService()
    {
        return new CustomDragDropService(this);
    }
}

class CustomTreeView : RadTreeView
{
    protected override RadTreeViewElement CreateTreeViewElement()
    {
        return new CustomTreeViewElement();
    }
 
    public override string ThemeClassName
    {
        get
        {
            return typeof(RadTreeView).FullName;
        }
    }
}

class CustomDragDropService : TreeViewDragDropService
{
    public CustomDragDropService(RadTreeViewElement owner) 
        : base(owner)
    { }

    protected override bool CancelPreviewDragDrop(RadDropEventArgs e)
    {
        return false;
    }
}

Completed
Last Updated: 14 Nov 2014 13:24 by ADMIN
To reproduce: use the following code

public class Item
{
    public int Id { get; set; }

    public string Title { get; set; }

    public string Tag { get; set; }

    public Item(int id, string title, string tag)
    {
        this.Id = id;
        this.Title = title;
        this.Tag = tag;
    }
}

public Form1()
{
    InitializeComponent();

    List<Item> items = new List<Item>();
    items.Add(new Item(1,"a1","x1"));
    items.Add(new Item(2,"a2","x2"));
    items.Add(new Item(3,"a3","x3"));
    items.Add(new Item(4,"b1","y1"));
    items.Add(new Item(5,"b2","y2"));
    items.Add(new Item(6,"b3","y3"));
    this.radTreeView1.DataSource = items;
    this.radTreeView1.DisplayMember = "Title";
    this.radTreeView1.ValueMember = "Id";
   
    radTreeView1.FilterDescriptors.Add(new FilterDescriptor("Tag", FilterOperator.Contains, "y"));
}

Workaround: use custom filtering:
public Form1()
{
    InitializeComponent();

    List<Item> items = new List<Item>();
    items.Add(new Item(1,"a1","x1"));
    items.Add(new Item(2,"a2","x2"));
    items.Add(new Item(3,"a3","x3"));
    items.Add(new Item(4,"b1","y1"));
    items.Add(new Item(5,"b2","y2"));
    items.Add(new Item(6,"b3","y3"));
    this.radTreeView1.DataSource = items;
    this.radTreeView1.DisplayMember = "Title";
    this.radTreeView1.ValueMember = "Id";
   
    radTreeView1.FilterDescriptors.Add(new FilterDescriptor("Tag", FilterOperator.Contains, "y")); 
    radTreeView1.TreeViewElement.FilterPredicate = FilterNode;
}

public class Item
{
    public int Id { get; set; }

    public string Title { get; set; }

    public string Tag { get; set; }

    public Item(int id, string title, string tag)
    {
        this.Id = id;
        this.Title = title;
        this.Tag = tag;
    }
}

private bool FilterNode(RadTreeNode node)
{
    Item item = node.DataBoundItem as Item;
  
    if (item != null && radTreeView1.FilterDescriptors.Count > 0)
    { 
        FilterDescriptor fd = radTreeView1.FilterDescriptors[0];
        var propertyValue = item.GetType().GetProperty(fd.PropertyName,
            BindingFlags.Public | BindingFlags.Instance).GetValue(item, null);
        if (propertyValue.ToString().Contains(fd.Value.ToString()))
        {
            return true;
        }
        return false;
    }

    return false;
}
Completed
Last Updated: 03 Sep 2014 07:34 by ADMIN
Workaround:

 class MyTreeView : RadTreeView
        {
            protected override RadTreeViewElement CreateTreeViewElement()
            {
                return new MyTreeViewElement();
            }

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

        class MyTreeViewElement : RadTreeViewElement
        {
            bool IsPerformingEndEdit = false;
            protected override bool EndEditCore(bool commitChanges)
            {
                if (!IsEditing || IsPerformingEndEdit)
                {
                    return false;
                }

                TreeNodeElement nodeElement = GetElement(this.SelectedNode);
                if (nodeElement == null)
                {
                    return false;
                }

                this.IsPerformingEndEdit = true;

                if (commitChanges && this.ActiveEditor.IsModified)
                {
                    SaveEditorValue(nodeElement, this.ActiveEditor.Value);
                }

                this.ActiveEditor.EndEdit();
                nodeElement.RemoveEditor(this.ActiveEditor);

                this.InvalidateMeasure();
                UpdateLayout();

                OnEdited(new TreeNodeEditedEventArgs(nodeElement, ActiveEditor, !commitChanges));

                typeof(RadTreeViewElement).GetField("activeEditor", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).SetValue(this, null); 

                this.IsPerformingEndEdit = false;

                return false;
            }

            protected override Type ThemeEffectiveType
            {
                get
                {
                    return typeof(RadTreeViewElement);
                }
            }
        }
Completed
Last Updated: 13 Dec 2014 07:51 by ADMIN
To reproduce: add a RadTreeView and a RadButton to the form. Use the following code snippet:

public Form1()
{
    InitializeComponent();

    RadTreeNode node1 = new RadTreeNode();
    node1.Text = "SameText";

    RadTreeNode node2 = new RadTreeNode();
    node2.Text = "SameText";

    this.radTreeView1.Nodes.Add(node1);
    this.radTreeView1.Nodes.Add(node2);

    this.radTreeView1.SortOrder = SortOrder.Ascending;
}

private void radButton1_Click(object sender, EventArgs e)
{
    for (int i = this.radTreeView1.Nodes.Count - 1; i > -1; i--)
    {
        this.radTreeView1.Nodes.RemoveAt(i);
    }
}

Workaround: set the SortOrder property to None before removing the nodes and restore it afterwards

private void radButton1_Click(object sender, EventArgs e)
{
    this.radTreeView1.SortOrder = SortOrder.None;
    for (int i = this.radTreeView1.Nodes.Count - 1; i > -1; i--)
    {
        this.radTreeView1.Nodes.RemoveAt(i);
    }
    this.radTreeView1.SortOrder = SortOrder.None;
}
Completed
Last Updated: 11 Aug 2016 09:35 by ADMIN
Please refer to the attached gif file.

Workaround: set the Enabled property to false at run time.
Completed
Last Updated: 19 Jun 2017 12:11 by ADMIN
Pressing arrow down or up when renaming item on a list with scrollbar throws null pointer exception. Example solution in attachement. 

Steps to reproduce with attached solution: 
Scroll down to last element (A99) 
Press F2 (rename) and rename to "0"
Press arrow up or down on a keyboard (without pressing enter after rename). -> NullReferenceException is thrown.
Completed
Last Updated: 18 Apr 2023 15:15 by ADMIN
Release R1 2019
To reproduce:
private void RadTreeView1_NodeCheckedChanging(object sender, Telerik.WinControls.UI.RadTreeViewCancelEventArgs e)
{
    Console.WriteLine(e.Action);
}

The action is always unknown.
Completed
Last Updated: 16 Dec 2015 09:03 by ADMIN
To reproduce: use the following code snippet and perform the illustrated steps on the attached gif file:

public Form1()
{
    InitializeComponent();

    for (int i = 0; i < 5; i++)
    {
        this.radTreeView1.Nodes.Add("Node" + i);
    }

    this.radTreeView1.NodeRemoving += radTreeView1_NodeRemoving;

    this.radTreeView1.AllowRemove = true;
    this.radTreeView1.AllowDefaultContextMenu = true;
}

private void radTreeView1_NodeRemoving(object sender, Telerik.WinControls.UI.RadTreeViewCancelEventArgs e)
{
    DialogResult result = RadMessageBox.Show(String.Format("Do you really want to remove the node '{0}'?", e.Node.Text),
        "Question", System.Windows.Forms.MessageBoxButtons.YesNo, RadMessageIcon.Question);

    if (result != System.Windows.Forms.DialogResult.Yes)
    {
        e.Cancel = true;
    }
}
Unplanned
Last Updated: 06 Feb 2017 12:00 by ADMIN
Please refer to the attached gif file and sample project. The screen tip position is not the same each time. Hence, the issue may not be reproducible every time.

Workaround: use the TooltiptextNeeded event.