简介

KryptonTreeView 是增强型树形视图控件,替代标准 System.Windows.Forms.TreeView。它以 Krypton 主题渲染节点、选中高亮与展开/折叠箭头,支持节点图标、勾选框、延迟加载(BeforeExpand)等,是导航树、目录结构、组织架构展示的首选控件。

KryptonTreeView 示例截图
KryptonTreeView 带图标的层级导航树

常用属性

属性类型说明
Nodes集合根节点集合(TreeNode)
SelectedNodeTreeNode当前选中节点
ImageListImageList节点图标列表
CheckBoxesbool节点前是否显示勾选框
ShowLinesbool是否显示层级连接线
ShowPlusMinusbool是否显示展开/折叠的 +/- 按钮
ShowRootLinesbool根节点是否显示连接线
HideSelectionbool失去焦点时是否隐藏选中高亮
LabelEditbool是否允许双击节点就地编辑文字
ItemHeightint节点行高
StateCommon.Item.Back.Color1Color节点背景色

快速上手

构建层级树

using Krypton.Toolkit;

var tree = new KryptonTreeView();
tree.Dock = DockStyle.Fill;
tree.HideSelection = false;

// 根节点
var nodeRoot = tree.Nodes.Add("解决方案");

// 子节点
var nodeProj = nodeRoot.Nodes.Add("订单管理");
nodeProj.Nodes.Add("订单列表");
nodeProj.Nodes.Add("订单统计");
nodeRoot.Nodes.Add("系统设置");

// 默认展开并选中
nodeRoot.Expand();
tree.SelectedNode = nodeProj;

// 选中节点改变事件
tree.AfterSelect += (s, e) =>
    Console.WriteLine($"选中:{e.Node.Text}");

this.Controls.Add(tree);

带图标的节点

var images = new ImageList();
images.Images.Add("folder", Properties.Resources.icon_folder);
images.Images.Add("file", Properties.Resources.icon_file);
tree.ImageList = images;

var node = new TreeNode("文档", 
    images.Images.IndexOfKey("folder"),   // 未选中图标
    images.Images.IndexOfKey("folder"));  // 选中图标
tree.Nodes.Add(node);

进阶用法

延迟加载子节点(大数据量)

// 先加占位节点,展开时才真正加载
var nodeDept = tree.Nodes.Add("部门");
nodeDept.Nodes.Add("加载中…");  // 占位,使节点显示 + 号

tree.BeforeExpand += (s, e) =>
{
    if (e.Node.Nodes.Count == 1 && e.Node.Nodes[0].Text == "加载中…")
    {
        e.Node.Nodes.Clear();
        foreach (string name in LoadDepartments())  // 从数据库/服务加载
            e.Node.Nodes.Add(name);
    }
};

勾选框与全选联动

tree.CheckBoxes = true;

// 勾选父节点时联动子节点
tree.AfterCheck += (s, e) =>
{
    foreach (TreeNode child in e.Node.Nodes)
        child.Checked = e.Node.Checked;
};

// 收集所有勾选节点
var checkedNodes = new List<TreeNode>();
void Collect(TreeNodeCollection nodes)
{
    foreach (TreeNode n in nodes)
    {
        if (n.Checked) checkedNodes.Add(n);
        Collect(n.Nodes);
    }
}
Collect(tree.Nodes);
提示:KryptonTreeView 常与 KryptonSplitContainer 搭配,左侧导航树 + 右侧内容面板,构成经典的主从布局。

对应示例项目

📁 Source/Krypton Toolkit Examples/KryptonTreeView Examples/

包含:层级构建、图标节点、延迟加载、勾选联动演示。

相关控件