syncfusion-winforms-multicolumn-treeview
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseImplementing MultiColumn TreeView
实现多列TreeView
The MultiColumnTreeView is an advanced treeview control for Windows Forms that displays hierarchical data with multiple columns. This control combines the tree structure visualization with additional data columns, making it ideal for file explorers, organizational charts, and data browsers where you need to show both hierarchy and related information.
MultiColumnTreeView是适用于Windows Forms的高级树视图控件,可展示带有多列数据的层级结构。该控件将树结构可视化与额外数据列相结合,非常适合用于需要同时展示层级结构和关联信息的文件资源管理器、组织结构图、数据浏览器等场景。
When to Use This Skill
何时使用本技能
Use this skill when you need to:
- Display hierarchical data with multiple columns of information
- Build file explorers or folder browsers with metadata columns
- Create organizational charts with employee details
- Show product catalogs with hierarchical categories and specifications
- Implement data browsers with parent-child relationships
- Add interactive features like checkboxes, option buttons, or inline editing
- Load large datasets on demand for better performance
- Sort and filter hierarchical data dynamically
- Customize appearance with styles, colors, and themes
- Bind to XML data for easy import/export
当你需要实现以下需求时可以使用本技能:
- 展示层级数据以及对应的多列信息
- 构建文件资源管理器或文件夹浏览器,附带元数据列
- 创建组织结构图,展示员工详细信息
- 展示产品目录,包含层级分类和规格参数
- 实现带有父子关系的数据浏览器
- 添加交互功能比如复选框、单选按钮、行内编辑
- 按需加载大型数据集以提升性能
- 对层级数据进行动态排序和过滤
- 通过样式、颜色、主题自定义外观
- 绑定XML数据以便于导入导出
Component Overview
组件概览
The MultiColumnTreeView provides:
Core Components:
- TreeNodeAdv - Individual nodes with text, images, and subitems
- TreeColumnAdv - Column definitions with headers and styling
- TreeNodeAdvSubItem - Additional column data for each node
Key Capabilities:
- Multiple columns with customizable headers
- Hierarchical node structure with unlimited depth
- Interactive elements (checkboxes, option buttons)
- Multiple selection modes
- Sorting and filtering
- Load on demand for performance
- Flexible style architecture
- XML data binding
- Event-driven interactions
MultiColumnTreeView提供了以下能力:
核心组件:
- TreeNodeAdv - 包含文本、图片和子项的独立节点
- TreeColumnAdv - 带有表头和样式的列定义
- TreeNodeAdvSubItem - 每个节点对应的额外列数据
核心能力:
- 支持自定义表头的多列布局
- 层级节点结构,深度无限制
- 交互元素(复选框、单选按钮)
- 多种选择模式
- 排序与过滤
- 按需加载提升性能
- 灵活的样式架构
- XML数据绑定
- 事件驱动的交互机制
Documentation and Navigation Guide
文档与导航指南
Getting Started
入门指南
📄 Read: references/getting-started.md
- Installation and assembly deployment
- Adding MultiColumnTreeView via designer
- Adding MultiColumnTreeView via code
- Creating columns (TreeColumnAdv)
- Adding nodes and child nodes
- Adding subitems for additional columns
- First working example
📄 阅读: references/getting-started.md
- 安装与程序集部署
- 通过设计器添加MultiColumnTreeView
- 通过代码添加MultiColumnTreeView
- 创建列(TreeColumnAdv)
- 添加节点和子节点
- 为额外列添加子项
- 首个可运行示例
Nodes and Columns Management
节点与列管理
📄 Read: references/nodes-and-columns.md
- TreeNodeAdv properties and features
- TreeColumnAdv configuration
- Adding/removing nodes dynamically
- Building hierarchical structures
- SubItems and multi-column data
- Node collection operations
- Column sizing and auto-sizing
📄 阅读: references/nodes-and-columns.md
- TreeNodeAdv属性与特性
- TreeColumnAdv配置
- 动态添加/移除节点
- 构建层级结构
- 子项与多列数据
- 节点集合操作
- 列宽调整与自动适配
Node Features
节点特性
📄 Read: references/node-features.md
- CheckBoxes and InteractiveCheckBoxes
- OptionButtons (radio button selection)
- ToolTips and HelpText
- Plus/Minus expansion symbols
- Root lines and connecting lines
- Custom controls in nodes
- Primitives (LabelPrimitive, ImagePrimitive, CheckBoxPrimitive)
- Multiline node text
📄 阅读: references/node-features.md
- 复选框与交互式复选框
- 单选按钮(radio选择)
- 提示框与帮助文本
- 展开/收起符号
- 根节点连线与节点连接线
- 节点内的自定义控件
- 基础元素(LabelPrimitive、ImagePrimitive、CheckBoxPrimitive)
- 多行节点文本
Selection and Editing
选择与编辑
📄 Read: references/selection-and-editing.md
- SelectionMode (Single, MultiSelectSameLevel, MultiSelectAll)
- SelectedNode and SelectedNodes properties
- ActiveNode management
- Mouse-based selection (drag selection)
- Keyboard search functionality
- Label editing (LabelEdit property)
- Node editing events
📄 阅读: references/selection-and-editing.md
- 选择模式(单选、同层级多选、全层级多选)
- SelectedNode与SelectedNodes属性
- 激活节点管理
- 鼠标选择(拖拽选择)
- 键盘搜索功能
- 标签编辑(LabelEdit属性)
- 节点编辑事件
Data Binding
数据绑定
📄 Read: references/data-binding.md
- Loading data from XML files
- Saving tree structure to XML
- XML node mapping
- Data binding patterns
- Dynamic node population
- Export and import operations
📄 阅读: references/data-binding.md
- 从XML文件加载数据
- 将树结构保存为XML
- XML节点映射
- 数据绑定模式
- 动态节点填充
- 导出与导入操作
Sorting and Filtering
排序与过滤
📄 Read: references/sorting-and-filtering.md
- Sort method and SortOrder
- SortType (Checkbox, Tag, Text)
- SortWithChildNode property
- CompareOptions for text comparison
- Filter levels (Root, All, Extended)
- Creating filter delegates
- RefreshFilter method
- Clearing filters
📄 阅读: references/sorting-and-filtering.md
- Sort方法与SortOrder
- 排序类型(Checkbox、Tag、Text)
- SortWithChildNode属性
- 文本比较的CompareOptions
- 过滤层级(根节点、全部、扩展)
- 创建过滤委托
- RefreshFilter方法
- 清除过滤条件
Appearance Customization
外观自定义
📄 Read: references/appearance.md
- Border styles (2D and 3D borders)
- Color customization (background, foreground, lines)
- Header customization
- BaseStyles for nodes and columns
- Selected node appearance
- SubItem styling
- Visual styles (Office2016Colorful, White, Black, DarkGray)
- Image lists (LeftImage, RightImage, StateImage)
📄 阅读: references/appearance.md
- 边框样式(2D和3D边框)
- 颜色自定义(背景、前景、连线)
- 表头自定义
- 节点与列的基础样式
- 选中节点外观
- 子项样式
- 视觉样式(Office2016Colorful、White、Black、DarkGray)
- 图片列表(LeftImage、RightImage、StateImage)
Performance Optimization
性能优化
📄 Read: references/performance.md
- SuspendExpandRecalculate property
- BeginUpdate/EndUpdate pattern
- Load on demand implementation
- Large dataset handling
- Memory management tips
- Performance best practices
📄 阅读: references/performance.md
- SuspendExpandRecalculate属性
- BeginUpdate/EndUpdate模式
- 按需加载实现
- 大型数据集处理
- 内存管理技巧
- 性能最佳实践
Events
事件
📄 Read: references/events.md
- Node selection events
- Expand/collapse events
- Editing events (BeforeEdit, AfterEdit)
- Mouse and keyboard events
- Custom event handling patterns
- Event subscription examples
📄 阅读: references/events.md
- 节点选择事件
- 展开/收起事件
- 编辑事件(BeforeEdit、AfterEdit)
- 鼠标与键盘事件
- 自定义事件处理模式
- 事件订阅示例
Quick Start Example
快速入门示例
Here's a minimal example showing a MultiColumnTreeView with countries and capitals:
csharp
using System;
using System.Windows.Forms;
using Syncfusion.Windows.Forms.Tools.MultiColumnTreeView;
public class MultiColumnTreeViewExample : Form
{
private MultiColumnTreeView multiColumnTreeView1;
public MultiColumnTreeViewExample()
{
InitializeForm();
SetupMultiColumnTreeView();
PopulateData();
}
private void InitializeForm()
{
this.Text = "MultiColumnTreeView Example";
this.Size = new System.Drawing.Size(600, 400);
}
private void SetupMultiColumnTreeView()
{
// Create control
multiColumnTreeView1 = new MultiColumnTreeView();
multiColumnTreeView1.Dock = DockStyle.Fill;
// Add columns
TreeColumnAdv countryColumn = new TreeColumnAdv();
countryColumn.Text = "Country";
countryColumn.Width = 200;
TreeColumnAdv capitalColumn = new TreeColumnAdv();
capitalColumn.Text = "Capital";
capitalColumn.Width = 150;
multiColumnTreeView1.Columns.AddRange(
new TreeColumnAdv[] { countryColumn, capitalColumn });
// Add to form
this.Controls.Add(multiColumnTreeView1);
}
private void PopulateData()
{
// Create parent nodes
TreeNodeAdv asiaNode = new TreeNodeAdv();
asiaNode.Text = "Asia";
TreeNodeAdv europeNode = new TreeNodeAdv();
europeNode.Text = "Europe";
// Create child nodes with subitems
TreeNodeAdv indiaNode = new TreeNodeAdv();
indiaNode.Text = "India";
TreeNodeAdvSubItem delhiSubItem = new TreeNodeAdvSubItem();
delhiSubItem.Text = "New Delhi";
indiaNode.SubItems.Add(delhiSubItem);
TreeNodeAdv chinaNode = new TreeNodeAdv();
chinaNode.Text = "China";
TreeNodeAdvSubItem beijingSubItem = new TreeNodeAdvSubItem();
beijingSubItem.Text = "Beijing";
chinaNode.SubItems.Add(beijingSubItem);
TreeNodeAdv ukNode = new TreeNodeAdv();
ukNode.Text = "United Kingdom";
TreeNodeAdvSubItem londonSubItem = new TreeNodeAdvSubItem();
londonSubItem.Text = "London";
ukNode.SubItems.Add(londonSubItem);
// Build hierarchy
asiaNode.Nodes.AddRange(new TreeNodeAdv[] { indiaNode, chinaNode });
europeNode.Nodes.Add(ukNode);
multiColumnTreeView1.Nodes.AddRange(
new TreeNodeAdv[] { asiaNode, europeNode });
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MultiColumnTreeViewExample());
}
}以下是展示国家和首都的MultiColumnTreeView最小示例:
csharp
using System;
using System.Windows.Forms;
using Syncfusion.Windows.Forms.Tools.MultiColumnTreeView;
public class MultiColumnTreeViewExample : Form
{
private MultiColumnTreeView multiColumnTreeView1;
public MultiColumnTreeViewExample()
{
InitializeForm();
SetupMultiColumnTreeView();
PopulateData();
}
private void InitializeForm()
{
this.Text = "MultiColumnTreeView Example";
this.Size = new System.Drawing.Size(600, 400);
}
private void SetupMultiColumnTreeView()
{
// Create control
multiColumnTreeView1 = new MultiColumnTreeView();
multiColumnTreeView1.Dock = DockStyle.Fill;
// Add columns
TreeColumnAdv countryColumn = new TreeColumnAdv();
countryColumn.Text = "Country";
countryColumn.Width = 200;
TreeColumnAdv capitalColumn = new TreeColumnAdv();
capitalColumn.Text = "Capital";
capitalColumn.Width = 150;
multiColumnTreeView1.Columns.AddRange(
new TreeColumnAdv[] { countryColumn, capitalColumn });
// Add to form
this.Controls.Add(multiColumnTreeView1);
}
private void PopulateData()
{
// Create parent nodes
TreeNodeAdv asiaNode = new TreeNodeAdv();
asiaNode.Text = "Asia";
TreeNodeAdv europeNode = new TreeNodeAdv();
europeNode.Text = "Europe";
// Create child nodes with subitems
TreeNodeAdv indiaNode = new TreeNodeAdv();
indiaNode.Text = "India";
TreeNodeAdvSubItem delhiSubItem = new TreeNodeAdvSubItem();
delhiSubItem.Text = "New Delhi";
indiaNode.SubItems.Add(delhiSubItem);
TreeNodeAdv chinaNode = new TreeNodeAdv();
chinaNode.Text = "China";
TreeNodeAdvSubItem beijingSubItem = new TreeNodeAdvSubItem();
beijingSubItem.Text = "Beijing";
chinaNode.SubItems.Add(beijingSubItem);
TreeNodeAdv ukNode = new TreeNodeAdv();
ukNode.Text = "United Kingdom";
TreeNodeAdvSubItem londonSubItem = new TreeNodeAdvSubItem();
londonSubItem.Text = "London";
ukNode.SubItems.Add(londonSubItem);
// Build hierarchy
asiaNode.Nodes.AddRange(new TreeNodeAdv[] { indiaNode, chinaNode });
europeNode.Nodes.Add(ukNode);
multiColumnTreeView1.Nodes.AddRange(
new TreeNodeAdv[] { asiaNode, europeNode });
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MultiColumnTreeViewExample());
}
}Common Patterns
常用模式
Pattern 1: Adding Nodes with Multiple Columns
模式1:添加带多列数据的节点
csharp
// Create node for first column
TreeNodeAdv employeeNode = new TreeNodeAdv();
employeeNode.Text = "John Doe";
// Add subitems for additional columns
TreeNodeAdvSubItem departmentSubItem = new TreeNodeAdvSubItem();
departmentSubItem.Text = "Engineering";
TreeNodeAdvSubItem salarySubItem = new TreeNodeAdvSubItem();
salarySubItem.Text = "$85,000";
employeeNode.SubItems.Add(departmentSubItem);
employeeNode.SubItems.Add(salarySubItem);
multiColumnTreeView1.Nodes.Add(employeeNode);csharp
// Create node for first column
TreeNodeAdv employeeNode = new TreeNodeAdv();
employeeNode.Text = "John Doe";
// Add subitems for additional columns
TreeNodeAdvSubItem departmentSubItem = new TreeNodeAdvSubItem();
departmentSubItem.Text = "Engineering";
TreeNodeAdvSubItem salarySubItem = new TreeNodeAdvSubItem();
salarySubItem.Text = "$85,000";
employeeNode.SubItems.Add(departmentSubItem);
employeeNode.SubItems.Add(salarySubItem);
multiColumnTreeView1.Nodes.Add(employeeNode);Pattern 2: Interactive Nodes with Checkboxes
模式2:带复选框的交互式节点
csharp
// Enable checkboxes for all nodes
multiColumnTreeView1.ShowCheckBoxes = true;
multiColumnTreeView1.InteractiveCheckBoxes = true;
// Or for individual nodes
TreeNodeAdv node = new TreeNodeAdv();
node.Text = "Select Me";
node.ShowCheckBox = true;
node.InteractiveCheckBox = true; // Parent reflects child statescsharp
// Enable checkboxes for all nodes
multiColumnTreeView1.ShowCheckBoxes = true;
multiColumnTreeView1.InteractiveCheckBoxes = true;
// Or for individual nodes
TreeNodeAdv node = new TreeNodeAdv();
node.Text = "Select Me";
node.ShowCheckBox = true;
node.InteractiveCheckBox = true; // Parent reflects child statesPattern 3: Sorting Tree Data
模式3:树数据排序
csharp
// Sort by text in ascending order
multiColumnTreeView1.Nodes.Sort(SortOrder.Ascending);
// Sort with child nodes
multiColumnTreeView1.Nodes[0].SortOrder = SortOrder.Descending;csharp
// Sort by text in ascending order
multiColumnTreeView1.Nodes.Sort(SortOrder.Ascending);
// Sort with child nodes
multiColumnTreeView1.Nodes[0].SortOrder = SortOrder.Descending;Pattern 4: Filtering Nodes
模式4:过滤节点
csharp
// Define filter delegate
public bool FilterNodes(object o)
{
var node = o as TreeNodeAdv;
if (node.SubItems.Count > 0)
{
int value = int.Parse(node.SubItems[0].Text);
return value > 50000; // Filter by criteria
}
return false;
}
// Apply filter
multiColumnTreeView1.FilterLevel = FilterLevel.Extended;
multiColumnTreeView1.Filter = FilterNodes;
multiColumnTreeView1.RefreshFilter();csharp
// Define filter delegate
public bool FilterNodes(object o)
{
var node = o as TreeNodeAdv;
if (node.SubItems.Count > 0)
{
int value = int.Parse(node.SubItems[0].Text);
return value > 50000; // Filter by criteria
}
return false;
}
// Apply filter
multiColumnTreeView1.FilterLevel = FilterLevel.Extended;
multiColumnTreeView1.Filter = FilterNodes;
multiColumnTreeView1.RefreshFilter();Pattern 5: Handling Selection Events
模式5:处理选择事件
csharp
// Subscribe to node selected event
multiColumnTreeView1.NodeSelected += (sender, e) =>
{
if (multiColumnTreeView1.SelectedNode != null)
{
string nodeText = multiColumnTreeView1.SelectedNode.Text;
MessageBox.Show($"Selected: {nodeText}");
}
};csharp
// Subscribe to node selected event
multiColumnTreeView1.NodeSelected += (sender, e) =>
{
if (multiColumnTreeView1.SelectedNode != null)
{
string nodeText = multiColumnTreeView1.SelectedNode.Text;
MessageBox.Show($"Selected: {nodeText}");
}
};Key Properties and Methods
核心属性与方法
Essential Properties
必备属性
Control-Level:
- - Collection of TreeColumnAdv objects
Columns - - Root-level TreeNodeAdv collection
Nodes - - Currently selected node (single selection)
SelectedNode - - Collection of selected nodes (multi-selection)
SelectedNodes - - Node with focus
ActiveNode - - Single, MultiSelectSameLevel, MultiSelectAll
SelectionMode - - Display checkboxes on all nodes
ShowCheckBoxes - - Display option buttons on all nodes
ShowOptionButtons - - Show connecting lines between nodes
ShowLines - - Show lines between root nodes
ShowRootLines - - Show expand/collapse symbols
ShowPlusMinus - - Visual theme (Office2016Colorful, White, Black, DarkGray)
Style - - Filter scope (Root, All, Extended)
FilterLevel - - Filter delegate function
Filter
Node Properties (TreeNodeAdv):
- - Node text content
Text - - Collection of TreeNodeAdvSubItem objects
SubItems - - Child nodes collection
Nodes - - Checkbox state
Checked - - Option button state
Optioned - - Expand/collapse state
Expanded - - Show checkbox for this node
ShowCheckBox - - Show option button for this node
ShowOptionButton - - Left image indices
LeftImageIndices - - Right image indices
RightImageIndices - - Tooltip text
HelpText
Column Properties (TreeColumnAdv):
- - Column header text
Text - - Column width in pixels
Width - - Header background brush
Background - - Header text color
TextColor
控件层级:
- - TreeColumnAdv对象集合
Columns - - 根层级TreeNodeAdv集合
Nodes - - 当前选中节点(单选模式)
SelectedNode - - 选中节点集合(多选模式)
SelectedNodes - - 获得焦点的节点
ActiveNode - - 单选、同层级多选、全层级多选
SelectionMode - - 为所有节点展示复选框
ShowCheckBoxes - - 为所有节点展示单选按钮
ShowOptionButtons - - 展示节点间的连接线
ShowLines - - 展示根节点之间的连线
ShowRootLines - - 展示展开/收起符号
ShowPlusMinus - - 视觉主题(Office2016Colorful、White、Black、DarkGray)
Style - - 过滤范围(根节点、全部、扩展)
FilterLevel - - 过滤委托函数
Filter
节点属性(TreeNodeAdv):
- - 节点文本内容
Text - - TreeNodeAdvSubItem对象集合
SubItems - - 子节点集合
Nodes - - 复选框状态
Checked - - 单选按钮状态
Optioned - - 展开/收起状态
Expanded - - 为当前节点展示复选框
ShowCheckBox - - 为当前节点展示单选按钮
ShowOptionButton - - 左侧图片索引
LeftImageIndices - - 右侧图片索引
RightImageIndices - - 提示框文本
HelpText
列属性(TreeColumnAdv):
- - 列表头文本
Text - - 列宽(像素)
Width - - 表头背景画刷
Background - - 列表头文本颜色
TextColor
Essential Methods
必备方法
Control Methods:
- - Suspend visual updates for performance
BeginUpdate() - - Resume visual updates
EndUpdate() - - Expand all nodes
ExpandAll() - - Collapse all nodes
CollapseAll() - - Reapply current filter
RefreshFilter() - - Sort nodes
Sort()
Node Methods:
- - Expand node
Expand() - - Collapse node
Collapse() - - Scroll node into view
EnsureVisible()
控件方法:
- - 暂停视觉更新以提升性能
BeginUpdate() - - 恢复视觉更新
EndUpdate() - - 展开所有节点
ExpandAll() - - 收起所有节点
CollapseAll() - - 重新应用当前过滤条件
RefreshFilter() - - 对节点排序
Sort()
节点方法:
- - 展开节点
Expand() - - 收起节点
Collapse() - - 滚动视图让节点可见
EnsureVisible()
Common Use Cases
常见使用场景
Use Case 1: File Explorer
场景1:文件资源管理器
Display file system hierarchy with file names, sizes, dates, and types across multiple columns. Use icons for file types and implement lazy loading for large directory structures.
展示文件系统层级结构,多列展示文件名、大小、日期、类型等信息。使用文件类型图标,为大型目录结构实现懒加载。
Use Case 2: Organizational Chart
场景2:组织结构图
Show company structure with employee names, titles, departments, and contact information. Use checkboxes for selection and option buttons for primary contact designation.
展示公司层级结构,包含员工姓名、职位、部门、联系方式等信息。使用复选框做选择,单选按钮指定主联系人。
Use Case 3: Product Catalog
场景3:产品目录
Display product categories and subcategories with pricing, stock, and description columns. Implement filtering by price range or stock availability.
展示产品分类和子分类,包含价格、库存、描述等列。实现按价格范围或库存状态过滤。
Use Case 4: Project Task Manager
场景4:项目任务管理器
Show project tasks in hierarchical structure with task names, assignees, due dates, and status. Use checkboxes for task completion tracking.
以层级结构展示项目任务,包含任务名称、负责人、截止日期、状态等列。使用复选框跟踪任务完成情况。
Use Case 5: Database Schema Viewer
场景5:数据库结构查看器
Display database tables, views, and columns in tree format with data types, constraints, and descriptions in additional columns.
以树形格式展示数据库表、视图、列,额外列展示数据类型、约束、描述等信息。
Assembly Requirements
程序集要求
Required Assemblies:
Syncfusion.Grid.BaseSyncfusion.Grid.WindowsSyncfusion.Shared.BaseSyncfusion.Shared.WindowsSyncfusion.Tools.BaseSyncfusion.Tools.Windows
Installation via NuGet:
powershell
Install-Package Syncfusion.Tools.Windows所需程序集:
Syncfusion.Grid.BaseSyncfusion.Grid.WindowsSyncfusion.Shared.BaseSyncfusion.Shared.WindowsSyncfusion.Tools.BaseSyncfusion.Tools.Windows
通过NuGet安装:
powershell
Install-Package Syncfusion.Tools.WindowsBest Practices
最佳实践
- Use BeginUpdate/EndUpdate when adding many nodes to improve performance
- Enable load on demand for large datasets to reduce initial load time
- Set SuspendExpandRecalculate to true for faster node expansion with many nodes
- Use appropriate selection mode based on user requirements
- Provide clear column headers to make data relationships obvious
- Handle events to respond to user interactions appropriately
- Apply consistent styling through BaseStyles for professional appearance
- Test with large datasets to ensure performance meets requirements
- Use XML binding for easy data persistence
- Clear filters when no longer needed to show all data
- 添加大量节点时使用BeginUpdate/EndUpdate提升性能
- 大型数据集启用按需加载减少首次加载时间
- 大量节点展开时将SuspendExpandRecalculate设为true提升速度
- 根据用户需求选择合适的选择模式
- 提供清晰的列表头让数据关系更明确
- 合理处理事件响应用户交互
- 通过BaseStyles应用统一的样式打造专业外观
- 使用大型数据集测试确保性能符合要求
- 使用XML绑定简化数据持久化
- 过滤条件不再需要时及时清除以展示全部数据
Related Components
相关组件
- TreeView - Single-column tree control
- DataGrid - Flat grid without hierarchy
- ListView - List with columns but no tree structure
- TreeView - 单列树控件
- DataGrid - 无层级结构的平面网格
- ListView - 带列但无树形结构的列表
Troubleshooting Tips
故障排查技巧
- Nodes not displaying: Check if columns are added before nodes
- SubItems not visible: Ensure SubItems count matches column count - 1
- Performance issues: Use BeginUpdate/EndUpdate and SuspendExpandRecalculate
- Checkboxes not working: Verify ShowCheckBoxes or ShowCheckBox is true
- Filter not applying: Call RefreshFilter() after setting Filter delegate
- Selection not working: Check SelectionMode property setting
- 节点不展示: 检查是否在添加节点前先添加了列
- 子项不可见: 确保子项数量等于列数减1
- 性能问题: 使用BeginUpdate/EndUpdate和SuspendExpandRecalculate
- 复选框不工作: 确认ShowCheckBoxes或ShowCheckBox属性为true
- 过滤不生效: 设置过滤委托后调用RefreshFilter()
- 选择功能不工作: 检查SelectionMode属性设置