简介

KryptonBreadCrumb 是面包屑导航控件,类似 Windows 资源管理器地址栏的路径导航效果。它以层级按钮链的形式展示当前路径,用户可点击任意层级快速跳转,每个节点还可展开下拉列表显示同级子项,非常适合文件浏览器、分类导航等场景。

KryptonBreadCrumb 示例截图
KryptonBreadCrumb 面包屑导航效果

常用属性

属性类型说明
RootItemBreadCrumbItem根节点(面包屑的起始项)
SelectedItemBreadCrumbItem当前选中的节点
DropButtonStyleDropButtonStyle下拉按钮的视觉风格
StateCommon.Item.Content.ShortText.FontFont节点文字字体
StateCommon.Item.Content.ShortText.Color1Color节点文字颜色
StateCommon.Item.Back.Color1Color节点背景色
StateTracking.Item.Back.Color1Color鼠标悬停时节点背景色
StatePressed.Item.Back.Color1Color按下时节点背景色
SizeSize控件尺寸
DockDockStyle停靠方式(常用于 DockStyle.Top)

快速上手

基本用法

using Krypton.Toolkit;

// 创建面包屑导航
var breadCrumb = new KryptonBreadCrumb();
breadCrumb.Dock = DockStyle.Top;
breadCrumb.Height = 28;

// 构建层级节点
var root = new BreadCrumbItem("电脑");
var driveC = new BreadCrumbItem("本地磁盘 (C:)");
var folderUsers = new BreadCrumbItem("Users");
var folderDocs = new BreadCrumbItem("Documents");

root.Items.Add(driveC);
driveC.Items.Add(folderUsers);
folderUsers.Items.Add(folderDocs);

breadCrumb.RootItem = root;
breadCrumb.SelectedItem = folderDocs;

// 选中节点变化事件
breadCrumb.SelectedItemChanged += (s, e) =>
{
    lblPath.Text = "当前路径:" + GetFullPath(breadCrumb.SelectedItem);
};

this.Controls.Add(breadCrumb);

获取完整路径

private string GetFullPath(BreadCrumbItem item)
{
    var parts = new List<string>();
    var current = item;
    while (current != null)
    {
        parts.Insert(0, current.ShortText);
        current = current.Parent;
    }
    return string.Join(" > ", parts);
}

进阶用法

文件浏览器联动

// 面包屑 + 文件列表联动
var breadCrumb = new KryptonBreadCrumb();
breadCrumb.Dock = DockStyle.Top;

var listView = new KryptonListView();
listView.Dock = DockStyle.Fill;
listView.View = View.Details;

// 点击面包屑节点时刷新文件列表
breadCrumb.SelectedItemChanged += (s, e) =>
{
    var path = GetFullPath(breadCrumb.SelectedItem);
    LoadDirectory(path, listView);
};

// 双击文件列表中的文件夹时更新面包屑
listView.ItemActivate += (s, e) =>
{
    if (listView.SelectedItems.Count > 0)
    {
        var folderName = listView.SelectedItems[0].Text;
        NavigateToFolder(folderName, breadCrumb);
    }
};

动态添加子节点

// 选中节点时动态加载子项(懒加载)
breadCrumb.SelectedItemChanged += (s, e) =>
{
    var item = breadCrumb.SelectedItem;
    if (item.Items.Count == 0)
    {
        // 从数据源加载子项
        var children = GetChildItems(item);
        foreach (var child in children)
        {
            item.Items.Add(new BreadCrumbItem(child.Name));
        }
    }
};
提示:KryptonBreadCrumb 的节点通过 BreadCrumbItem.Items 集合构建层级关系。设置 SelectedItem 会自动展开从根到该节点的完整路径链。

对应示例项目

📁 Source/Krypton Toolkit Examples/KryptonBreadCrumb Examples/

包含:基本面包屑导航、文件浏览器联动、动态加载子节点演示。

相关控件