简介

KryptonNavigator 是一个功能强大的导航容器控件,用于在多个页面(KryptonPage)之间切换。它支持多种显示模式,包括选项卡(Tab)、Outlook 风格、堆叠按钮(Stack)、HeaderGroup 等,可满足不同 UI 布局需求。每个页面可包含独立的控件集合,用户通过点击标签、按钮或列表项来切换当前显示的页面。

KryptonNavigator 示例截图
KryptonNavigator 在 Tab 模式下的外观

常用属性

属性类型说明
NavigatorModeNavigatorMode导航器显示模式(Tab / Bar / Stack / HeaderGroup / Panel / Outlook 等)
PagesKryptonPageCollection包含的所有页面集合
SelectedPageKryptonPage当前选中的页面
SelectedIndexint当前选中页面的索引
Bar.OrientationVisualOrientationBar/Tab 模式下标签的方向(Top / Bottom / Left / Right)
Bar.ItemOrientationButtonOrientation标签项内文字的排列方向
Bar.BarMultilineBarMultiline标签是否允许多行显示
Stack.OrientationVisualOrientationStack 模式下按钮的堆叠方向
Stack.StackAlignmentRelativePositionAlignStack 模式下按钮的对齐方式
Stack.StackMapSizebool是否根据最大页面尺寸统一所有按钮大小
Header.HeaderPositionVisualOrientationHeaderGroup 模式下头部的位置
Header.HeaderStyleHeaderStyle头部区域的视觉风格
Button.ButtonDisplayButtonDisplay按钮上显示的内容(Text / Image / TextImage 等)
Button.CloseButtonDisplayButtonDisplay关闭按钮的显示策略
Button.ButtonActionNavigatorAction点击按钮时的行为(SelectPage / None)
PaletteModePaletteMode调色板模式(跟随全局或独立设置)

NavigatorMode 模式一览

模式说明
NavigatorMode.BarTabGroup选项卡 + 内容区域(最常用,类似 TabControl)
NavigatorMode.BarRibbonTabGroupRibbon 风格选项卡 + 内容区域
NavigatorMode.BarCheckButtonGroupOutside外部 CheckButton 栏 + 内容区域
NavigatorMode.BarCheckButtonGroupInside内部 CheckButton 栏 + 内容区域
NavigatorMode.BarCheckButtonOnly仅显示 CheckButton 栏(无内容区域)
NavigatorMode.HeaderGroupHeaderGroup 风格,头部显示页面信息
NavigatorMode.HeaderGroupTabHeaderGroup + 选项卡混合
NavigatorMode.StackCheckButtonGroup垂直/水平堆叠按钮 + 内容区域
NavigatorMode.StackCheckButtonHeaderGroup堆叠按钮 + HeaderGroup 内容区域
NavigatorMode.OutlookFullOutlook 风格完整模式(大按钮 + 小按钮溢出)
NavigatorMode.OutlookMiniOutlook 精简模式(仅小按钮)
NavigatorMode.Panel纯面板模式(无导航 UI,仅显示选中页面)

快速上手

基本用法(代码创建)

using Krypton.Navigator;

// 创建导航器
var navigator = new KryptonNavigator();
navigator.Dock = DockStyle.Fill;
navigator.NavigatorMode = NavigatorMode.BarTabGroup;

// 创建页面
var page1 = new KryptonPage("页面一", "第一个页面的标题", "描述文字");
page1.TextTitle = "欢迎";
page1.TextDescription = "这是第一个导航页面";

var page2 = new KryptonPage("页面二", "第二个页面的标题", "描述文字");

// 向页面添加控件
var label = new KryptonLabel();
label.Text = "Hello Navigator!";
page1.Controls.Add(label);

// 添加页面到导航器
navigator.Pages.AddRange(new KryptonPage[] { page1, page2 });

this.Controls.Add(navigator);

切换模式

// 切换为 Outlook 风格
navigator.NavigatorMode = NavigatorMode.OutlookFull;

// 切换为堆叠按钮
navigator.NavigatorMode = NavigatorMode.StackCheckButtonGroup;
navigator.Stack.Orientation = VisualOrientation.Left;

// 切换为 HeaderGroup
navigator.NavigatorMode = NavigatorMode.HeaderGroup;

响应页面切换事件

navigator.SelectedPageChanged += (s, e) =>
{
    var page = navigator.SelectedPage;
    if (page != null)
    {
        statusLabel.Text = "当前页面:" + page.Text;
    }
};

进阶用法

动态添加/移除页面

// 动态添加
var newPage = new KryptonPage("新页面", "动态添加", "");
navigator.Pages.Add(newPage);

// 移除指定页面
navigator.Pages.Remove(page2);

// 移除当前选中页面
if (navigator.SelectedPage != null)
    navigator.Pages.Remove(navigator.SelectedPage);

自定义选项卡外观

// 设置选项卡方向为左侧
navigator.Bar.Orientation = VisualOrientation.Left;

// 允许多行标签
navigator.Bar.BarMultiline = BarMultiline.MultiLine;

// 设置按钮显示内容(图标+文字)
navigator.Button.ButtonDisplay = ButtonDisplay.Logic;

// 显示关闭按钮
navigator.Button.CloseButtonDisplay = ButtonDisplay.ShowEnabled;

Outlook 模式配置

navigator.NavigatorMode = NavigatorMode.OutlookFull;

// 设置溢出按钮数量(底部小按钮)
navigator.Outlook.OverflowSize = 3;

// 设置大按钮的最小高度
navigator.Outlook.MiniButtonSize = new Size(0, 24);
提示:在 LCode 设计器中,从工具箱「LCode Components」分类拖放 KryptonNavigator 后,可通过属性面板的 Pages 集合编辑器添加 KryptonPage。每个 KryptonPage 相当于一个独立容器,可在其中放置任意控件。

对应示例项目

📁 Source/Krypton Navigator Examples/

包含多个子项目:

相关控件