agentsclimarketplace

Syncfusion winforms treeview

Skill syncfusion/winforms-ui-components-skills/skills/syncfusion-winforms-treeview

Skills for Syncfusion WinForms controls. Enable AI-assisted development with comprehensive documentation, code examples, and best practices for 100+ UI controls including DataGrid, Charts, Scheduler, and more.

Install
npx -y skills add syncfusion/winforms-ui-components-skills --skill syncfusion-winforms-treeview

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Implements Syncfusion TreeViewAdv control for Windows Forms applications to display hierarchical tree structures, file explorers, organization charts, and nested data. Use this when working with hierarchical data, parent-child relationships, expandable nodes, file browser interfaces, or folder structures. The skill covers data binding, drag-and-drop, node customization, editing capabilities, and performance optimization for tree structures in WinForms.

SKILL.md

15.2 KB, ~3.4k tokens by cl100k_base, as published. Nobody here has run it

Implementing TreeViews in Windows Forms

When to Use This Skill

Use this skill ALWAYS and immediately when:

  • User needs to display hierarchical data in a tree structure
  • Building file explorers, folder browsers, or directory navigation
  • Implementing organization charts, category trees, or nested menus
  • Need parent-child relationships with expandable/collapsible nodes
  • Working with self-referencing data or data relations
  • Need drag-and-drop reordering of tree nodes
  • Implementing editable tree structures with insert/delete/rename operations
  • Performance optimization needed for large tree datasets (1000+ nodes)
  • User mentions: TreeView, hierarchical data, tree structure, expandable nodes, parent-child

Component Overview

The Syncfusion TreeViewAdv control displays hierarchical data in a tree structure with advanced features beyond the standard Windows Forms TreeView. It provides comprehensive support for data binding, drag-and-drop, virtualization, editing, and extensive customization options.

Key Features

  • Advanced Data Binding: Self-referencing, data relations, object-relational binding
  • Drag-and-Drop: Full drag-drop support with visual feedback and validation
  • Performance: Virtualization for 20,000+ nodes with minimal delay
  • Node Customization: Checkboxes, option buttons, images, custom styles
  • Editing Operations: Dynamic insert, delete, rename with data source sync
  • Load on Demand: Lazy loading of child nodes for better performance
  • Rich Appearance: Themes, custom styles, borders, colors, fonts
  • Advanced Features: Find/replace, history manager (undo/redo), XML persistence, printing
  • Multi-Selection: CTRL+SHIFT key support for multiple node selection
  • Context Menus: Associate menus with show/hide options

Common Use Cases

  • File/folder browser interfaces
  • Organization hierarchy displays
  • Category/subcategory navigation
  • Project/task tree structures
  • Settings/configuration trees
  • XML/JSON data visualization
  • Database table relationships
  • Multi-level menu systems

Documentation and Navigation Guide

Getting Started

πŸ“„ Read: references/getting-started.md

  • Installation and NuGet package setup
  • Adding control via Designer (Toolbox drag-drop)
  • Adding control manually in C# and VB.NET
  • Creating TreeViewAdv instances
  • Adding nodes through NodeCollection Editor
  • Adding nodes programmatically
  • Basic node customization (lines, plus/minus signs)
  • Assigning active nodes

Data Binding

πŸ“„ Read: references/data-binding.md

  • Binding to self-referencing data (single table with parent-child)
  • ParentMember, ChildMember, SelfRelationRootValue properties
  • Binding to data relations (multiple related tables)
  • Binding to object-relational data (custom objects)
  • DataSource, DisplayMember, ValueMember configuration
  • Synchronizing tree with data source changes

Node Customization

πŸ“„ Read: references/node-customization.md

  • Root lines and connecting lines (ShowLines, ShowRootLines)
  • Plus/Minus signs for parent nodes
  • ShowPlusOnExpand for expanded state indicators
  • CheckBoxes for node selection (ShowCheckBoxes)
  • OptionButtons for radio-style selection
  • Node-level vs control-level properties
  • Images for expanded/collapsed states
  • Left, right, and state image sources

Appearance and Styling

πŸ“„ Read: references/appearance-styling.md

  • Border customization (BorderStyle, BorderSingle, BorderColor)
  • 2D vs 3D borders (FixedSingle, Fixed3D)
  • Border styles (Solid, Dashed, Dotted, Inset, Outset)
  • Node appearance (font, colors, backgrounds)
  • Global styles vs node-specific styles
  • TreeNodeAdv customization properties
  • Styles architecture overview
  • Theme support and Office-like styling

Drag and Drop

πŸ“„ Read: references/drag-and-drop.md

  • Drag-drop functionality overview
  • Drag-drop event handling (DragDrop, DragEnter, DragLeave, DragOver)
  • ItemDrag event for initiating drag operations
  • GiveFeedback and QueryContinueDrag events
  • Custom drag feedback and validation
  • Advanced drag-drop scenarios
  • Inter-control drag-drop support

Editing Operations

πŸ“„ Read: references/editing-operations.md

  • Dynamic updates (insert, delete, rename)
  • Synchronizing with data source
  • GridGroupingControl integration
  • Runtime node manipulation
  • AcceptChanges pattern for data updates
  • Reflecting changes bidirectionally

Sorting

πŸ“„ Read: references/sorting.md

  • Runtime sorting capabilities
  • Sort methods and properties
  • Custom sorting logic
  • Sorting with data binding
  • Performance considerations

Load on Demand

πŸ“„ Read: references/load-on-demand.md

  • LoadOnDemand feature overview
  • Lazy loading for performance
  • BeforeExpand event handling
  • Adding sub-nodes dynamically
  • GetPath method for node paths
  • AddSeparatorAtEnd property

Performance Optimization

πŸ“„ Read: references/performance-optimization.md

  • EnableVirtualization for large datasets
  • Virtualization benefits (20,000+ nodes)
  • SuspendExpandRecalculate optimization
  • RecalculateExpansion property
  • Best practices for large trees
  • Performance benchmarks

Advanced Features

πŸ“„ Read: references/advanced-features.md

  • Find and Replace functionality
  • Search capabilities
  • History Manager (undo/redo operations)
  • Save and Load XML (persistence)
  • Printing support and customization
  • Context menus with show/hide options
  • Multi-selection with CTRL+SHIFT keys

ScrollBar Customization

πŸ“„ Read: references/scrollbar-customization.md

  • ScrollBar properties and configuration
  • Automatic scrolling support
  • Custom scrollbar appearance
  • Scroll behavior configuration

Quick Start Example

Basic TreeView Setup

using Syncfusion.Windows.Forms.Tools;

namespace WinFormsTreeApp
{
    public partial class Form1 : Form
    {
        private TreeViewAdv treeViewAdv1;
        
        public Form1()
        {
            InitializeComponent();
            InitializeTreeView();
        }
        
        private void InitializeTreeView()
        {
            // Create TreeViewAdv instance
            treeViewAdv1 = new TreeViewAdv();
            treeViewAdv1.Location = new System.Drawing.Point(20, 20);
            treeViewAdv1.Size = new System.Drawing.Size(300, 400);
            
            // Create nodes
            TreeNodeAdv parentNode1 = new TreeNodeAdv("Parent 1");
            TreeNodeAdv childNode1 = new TreeNodeAdv("Child 1");
            TreeNodeAdv childNode2 = new TreeNodeAdv("Child 2");
            
            // Build hierarchy
            parentNode1.Nodes.AddRange(new TreeNodeAdv[] { childNode1, childNode2 });
            
            TreeNodeAdv parentNode2 = new TreeNodeAdv("Parent 2");
            TreeNodeAdv childNode3 = new TreeNodeAdv("Child 3");
            parentNode2.Nodes.Add(childNode3);
            
            // Add root nodes
            treeViewAdv1.Nodes.AddRange(new TreeNodeAdv[] { parentNode1, parentNode2 });
            
            // Customize appearance
            treeViewAdv1.ShowLines = true;
            treeViewAdv1.ShowRootLines = true;
            treeViewAdv1.ShowPlusMinus = true;
            
            // Add to form
            this.Controls.Add(treeViewAdv1);
        }
    }
}

Data Binding Example

// Self-referencing data binding
DataTable dataTable = CreateHierarchicalData();

treeViewAdv1.DataSource = dataTable;
treeViewAdv1.DisplayMember = "Name";
treeViewAdv1.ValueMember = "ID";
treeViewAdv1.ParentMember = "ParentID";
treeViewAdv1.ChildMember = "ID";
treeViewAdv1.SelfRelationRootValue = DBNull.Value;

Common Patterns

Pattern 1: Programmatic Node Creation

When: Building tree structure dynamically from code

// Create nodes with constructor
TreeNodeAdv node = new TreeNodeAdv("Node Text");

// Set properties
node.Text = "Updated Text";
node.ShowCheckBox = true;
node.Tag = customDataObject;

// Add children
node.Nodes.Add(new TreeNodeAdv("Child"));

// Add to tree
treeViewAdv1.Nodes.Add(node);

Pattern 2: Self-Referencing Data Binding

When: Binding to single table with parent-child relationships

// Setup data source
treeViewAdv1.DataSource = employeeTable;
treeViewAdv1.DisplayMember = "EmployeeName";
treeViewAdv1.ValueMember = "EmployeeID";
treeViewAdv1.ParentMember = "ManagerID";
treeViewAdv1.ChildMember = "EmployeeID";
treeViewAdv1.SelfRelationRootValue = DBNull.Value; // Root nodes have null parent

Pattern 3: Load on Demand

When: Working with large datasets, need lazy loading

// Enable load on demand
treeViewAdv1.LoadOnDemand = true;

// Handle BeforeExpand to load children
treeViewAdv1.BeforeExpand += (sender, e) => 
{
    TreeNodeAdv node = e.Node;
    
    // Check if children already loaded
    if (node.Nodes.Count == 0)
    {
        // Load children from data source
        var children = LoadChildNodesFromDatabase(node.Tag);
        
        foreach (var child in children)
        {
            TreeNodeAdv childNode = new TreeNodeAdv(child.Name);
            childNode.Tag = child;
            node.Nodes.Add(childNode);
        }
    }
};

Pattern 4: Drag-Drop Node Reordering

When: Users need to reorder nodes via drag-drop

// Enable drag-drop
treeViewAdv1.AllowDrop = true;

// Handle ItemDrag
treeViewAdv1.ItemDrag += (sender, e) => 
{
    if (e.Item is TreeNodeAdv node)
    {
        treeViewAdv1.DoDragDrop(node, DragDropEffects.Move);
    }
};

// Handle DragDrop
treeViewAdv1.DragDrop += (sender, e) => 
{
    TreeNodeAdv sourceNode = (TreeNodeAdv)e.Data.GetData(typeof(TreeNodeAdv));
    TreeNodeAdv targetNode = treeViewAdv1.GetNodeAtPoint(treeViewAdv1.PointToClient(new Point(e.X, e.Y)));
    
    if (targetNode != null && sourceNode != targetNode)
    {
        sourceNode.Remove();
        targetNode.Nodes.Add(sourceNode);
        targetNode.Expand();
    }
};

Pattern 5: Performance Optimization for Large Trees

When: Working with 1000+ nodes, experiencing slow load times

// Enable virtualization
treeViewAdv1.EnableVirtualization = true;

// Optimize expand/collapse
treeViewAdv1.SuspendExpandRecalculate = true;
treeViewAdv1.RecalculateExpansion = false;

// Suspend layout during bulk operations
treeViewAdv1.BeginUpdate();
try
{
    // Add thousands of nodes
    for (int i = 0; i < 10000; i++)
    {
        treeViewAdv1.Nodes.Add(new TreeNodeAdv($"Node {i}"));
    }
}
finally
{
    treeViewAdv1.EndUpdate();
}

Key Properties

Data Binding Properties

  • DataSource - Data source object (DataTable, List, etc.)
  • DisplayMember - Field for node text display
  • ValueMember - Field for node value
  • ParentMember - Parent ID field for self-referencing
  • ChildMember - Child ID field for self-referencing
  • SelfRelationRootValue - Value indicating root nodes

Appearance Properties

  • ShowLines - Display connecting lines between nodes
  • ShowRootLines - Display lines between root nodes
  • ShowPlusMinus - Display expand/collapse buttons
  • ShowCheckBoxes - Display checkboxes on nodes
  • ShowOptionButtons - Display option buttons (radio style)
  • BorderStyle - Border style (None, FixedSingle, Fixed3D)

Behavior Properties

  • LoadOnDemand - Enable lazy loading of child nodes
  • AllowDrop - Enable drag-drop operations
  • EnableVirtualization - Enable virtualization for performance
  • SuspendExpandRecalculate - Optimize expand/collapse performance
  • RecalculateExpansion - Control dimension calculation on load

Node Properties (TreeNodeAdv)

  • Text - Node display text
  • Tag - Custom data object
  • Checked - Checkbox state
  • Expanded - Expand/collapse state
  • ShowCheckBox - Show checkbox for this node
  • ShowPlusMinus - Show plus/minus for this node

Key Events

Selection Events

  • AfterSelect - After node selection changes
  • BeforeSelect - Before node selection changes
  • NodeSelected - Node selected event

Expand/Collapse Events

  • BeforeExpand - Before node expands (use for load on demand)
  • AfterExpand - After node expands
  • BeforeCollapse - Before node collapses
  • AfterCollapse - After node collapses

Drag-Drop Events

  • ItemDrag - Node drag initiated
  • DragDrop - Item dropped on control
  • DragEnter - Drag enters control bounds
  • DragOver - Drag over control bounds

Edit Events

  • BeforeEdit - Before node edit starts
  • AfterEdit - After node edit completes

Common Use Cases

Use Case 1: File Explorer

Build Windows Explorer-like interface with folders and files:

  • Use load on demand for directory browsing
  • Add folder/file icons via LeftImageList
  • Handle double-click to open files
  • Implement context menus for file operations

Use Case 2: Organization Chart

Display company hierarchy with employees:

  • Bind to employee table with self-referencing data
  • Show employee photos as node images
  • Add checkboxes for multi-select operations
  • Implement drag-drop for reorganization

Use Case 3: Settings Tree

Create hierarchical settings/preferences interface:

  • Group settings by category in tree structure
  • Use option buttons for single-choice settings
  • Use checkboxes for boolean settings
  • Save/load settings via XML persistence

Use Case 4: Database Schema Visualizer

Display database tables and relationships:

  • Load database schema into tree
  • Show tables as parent nodes, columns as children
  • Add icons to indicate data types
  • Enable find/replace for schema search

Use Case 5: XML/JSON Editor

Visual editor for hierarchical data formats:

  • Parse XML/JSON into tree structure
  • Enable inline editing of node values
  • Implement undo/redo via History Manager
  • Save changes back to XML/JSON format

Troubleshooting

Issue: Nodes not appearing after data binding

  • Solution: Verify DataSource is not null, check ParentMember/ChildMember match column names, ensure SelfRelationRootValue matches root node pattern

Issue: Performance slow with large datasets

  • Solution: Enable EnableVirtualization, use LoadOnDemand for lazy loading, set SuspendExpandRecalculate = true

Issue: Drag-drop not working

  • Solution: Set AllowDrop = true, implement ItemDrag and DragDrop event handlers, check DragDropEffects

Issue: Changes not reflecting in bound data source

  • Solution: Call AcceptChanges() on DataTable after modifications, verify DataSource binding is active

Issue: Plus/minus signs not showing for parent nodes

  • Solution: Verify ShowPlusMinus = true, check nodes have children, for LoadOnDemand ensure ShowPlusOnExpand is configured

What ships with it: 11 files

98.2 KB alongside SKILL.md

Keep looking

Skills are one crate of 326,970. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.