KryptonTreeView ✓ LCode 已集成 Toolkit
命名空间:Krypton.Toolkit · 程序集:Krypton.Toolkit.dll
简介
KryptonTreeView 是增强型树形视图控件,替代标准 System.Windows.Forms.TreeView。它以 Krypton 主题渲染节点、选中高亮与展开/折叠箭头,支持节点图标、勾选框、延迟加载(BeforeExpand)等,是导航树、目录结构、组织架构展示的首选控件。
常用属性
| 属性 | 类型 | 说明 |
|---|---|---|
Nodes | 集合 | 根节点集合(TreeNode) |
SelectedNode | TreeNode | 当前选中节点 |
ImageList | ImageList | 节点图标列表 |
CheckBoxes | bool | 节点前是否显示勾选框 |
ShowLines | bool | 是否显示层级连接线 |
ShowPlusMinus | bool | 是否显示展开/折叠的 +/- 按钮 |
ShowRootLines | bool | 根节点是否显示连接线 |
HideSelection | bool | 失去焦点时是否隐藏选中高亮 |
LabelEdit | bool | 是否允许双击节点就地编辑文字 |
ItemHeight | int | 节点行高 |
StateCommon.Item.Back.Color1 | Color | 节点背景色 |
快速上手
构建层级树
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/
包含:层级构建、图标节点、延迟加载、勾选联动演示。