简介

KryptonPage 是 KryptonNavigator 中的单个页面容器。它继承自 VisualPanel,可像普通 Panel 一样承载子控件,同时提供标题、描述、图标等元数据,供 Navigator 在标签、按钮或头部区域中显示。KryptonPage 不能独立使用,必须作为 KryptonNavigator(或 Docking 组件)的子页面才有意义。

KryptonPage 示例截图
KryptonPage 在 Navigator 中作为选项卡内容页

常用属性

属性类型说明
Textstring页面名称(显示在选项卡/按钮上的主文字)
TextTitlestring页面标题(HeaderGroup 模式下显示的大标题)
TextDescriptionstring页面描述(HeaderGroup 模式下显示的副标题/描述文字)
ImageSmallImage小图标(显示在选项卡/按钮上,通常 16×16)
ImageMediumImage中等图标(Outlook 大按钮模式使用,通常 24×24)
ImageLargeImage大图标(HeaderGroup 头部区域使用,通常 32×32 或 48×48)
UniqueNamestring页面唯一标识符(Docking 持久化时使用)
Enabledbool页面是否启用(禁用后选项卡灰显不可点击)
Visiblebool页面是否可见(隐藏后不出现在导航栏中)
ToolTipTitlestring工具提示标题
ToolTipBodystring工具提示正文
ToolTipImageImage工具提示图标
ButtonSpecs集合页面级附加按钮(如关闭按钮)
FlagsKryptonPageFlags页面行为标志(AllowPageDrag、AllowPageReorder 等)

快速上手

创建基本页面

using Krypton.Navigator;

// 使用构造函数创建(text, title, description)
var page = new KryptonPage("设置", "系统设置", "配置应用程序参数");

// 设置图标
page.ImageSmall = Properties.Resources.icon_settings_16;
page.ImageLarge = Properties.Resources.icon_settings_32;

// 设置唯一名称(Docking 持久化需要)
page.UniqueName = "SettingsPage";

// 向页面添加控件(与普通 Panel 相同)
var txtName = new KryptonTextBox();
txtName.Location = new Point(10, 40);
txtName.Size = new Size(200, 24);
page.Controls.Add(txtName);

// 添加到 Navigator
navigator.Pages.Add(page);

在页面中构建复杂布局

var pageReport = new KryptonPage("报表", "销售报表", "查看月度销售数据");
pageReport.ImageSmall = Properties.Resources.icon_report;

// 页面内使用 Dock 布局
var grid = new KryptonDataGridView();
grid.Dock = DockStyle.Fill;
pageReport.Controls.Add(grid);

var panelTop = new KryptonPanel();
panelTop.Dock = DockStyle.Top;
panelTop.Height = 40;
pageReport.Controls.Add(panelTop);

navigator.Pages.Add(pageReport);

进阶用法

页面级 ButtonSpec(关闭按钮)

var page = new KryptonPage("文档1", "", "");

// 添加页面级关闭按钮
var closeSpec = new ButtonSpecAny();
closeSpec.Type = PaletteButtonSpecStyle.Close;
closeSpec.Click += (s, e) =>
{
    navigator.Pages.Remove(page);
    page.Dispose();
};
page.ButtonSpecs.Add(closeSpec);

控制页面拖拽与排序

// 允许页面拖拽(配合 Docking 使用)
page.Flags |= KryptonPageFlags.AllowPageDrag;

// 允许在 Navigator 中拖拽重排
page.Flags |= KryptonPageFlags.AllowPageReorder;

// 禁止用户关闭此页面
page.Flags &= ~KryptonPageFlags.AllowConfigSave;

动态修改页面元数据

// 运行时更新标题和描述
page.TextTitle = "已更新";
page.TextDescription = "数据已刷新:" + DateTime.Now.ToString("HH:mm:ss");

// 更新图标表示状态
page.ImageSmall = isDirty ? Resources.icon_modified : Resources.icon_saved;

// 隐藏/显示页面
page.Visible = false;  // 从导航栏隐藏
page.Visible = true;   // 重新显示
提示:KryptonPage 本质上是一个容器面板。在设计器中双击 KryptonNavigator 的 Pages 属性即可打开集合编辑器,添加页面后可切换到该页面的设计视图来放置子控件。UniqueName 在 Docking 场景中非常重要,用于持久化布局时标识页面。

对应示例项目

📁 Source/Krypton Navigator Examples/

KryptonPage 的用法贯穿所有 Navigator 示例项目,特别是:

相关控件