简介

KryptonRibbon 是仿 Office 风格的功能区控件,提供选项卡(Tab)、分组(Group)和各类命令项(Button、ComboBox、CheckBox 等)的层次化组织结构。它必须放置在 KryptonForm 上,通常 Dock 到窗体顶部。Ribbon 支持快速访问工具栏(QAT)、应用程序菜单、上下文选项卡、分组对话框启动器等高级特性。

KryptonRibbon 示例截图
KryptonRibbon 在 KryptonForm 上的典型布局

控件层次结构

KryptonRibbon
├── RibbonAppButton(应用程序菜单按钮)
├── QuickAccessToolbar(快速访问工具栏)
├── RibbonTabs(选项卡集合)
│   └── RibbonTab(单个选项卡)
│       └── Groups(分组集合)
│           └── RibbonGroup(单个分组)
│               └── Items(项集合)
│                   ├── RibbonButton(按钮)
│                   ├── RibbonComboBox(组合框)
│                   ├── RibbonCheckBox(复选框)
│                   ├── RibbonRadioButton(单选按钮)
│                   ├── RibbonTextBox(文本框)
│                   ├── RibbonSeparator(分隔线)
│                   ├── RibbonGallery(图库)
│                   ├── RibbonColorButton(颜色按钮)
│                   ├── RibbonDateTimePicker(日期选择器)
│                   ├── RibbonNumericUpDown(数字调节器)
│                   ├── RibbonTrackBar(滑动条)
│                   ├── RibbonMaskedTextBox(掩码文本框)
│                   ├── RibbonRichTextBox(富文本框)
│                   ├── RibbonCustomControl(自定义控件宿主)
│                   └── RibbonCluster(按钮簇)
└── ContextualTabGroups(上下文选项卡组)

常用属性

属性类型说明
RibbonTabsRibbonTabCollection选项卡集合
SelectedTabRibbonTab当前选中的选项卡
RibbonAppButton.AppButtonImageImage应用程序菜单按钮图标
RibbonAppButton.AppButtonMenuItems集合应用程序菜单项集合
QuickAccessToolbar.Visiblebool是否显示快速访问工具栏
MinimizedModebool是否处于最小化(折叠)模式
AllowMinimizedChangebool是否允许用户切换最小化状态
HideRibbonSizeSize窗口小于此尺寸时自动隐藏 Ribbon
PaletteModePaletteMode调色板模式

RibbonGroup 常用属性

属性类型说明
TextLine1string分组标题第一行
TextLine2string分组标题第二行
ImageImage分组标题图标
DialogBoxLauncherbool是否显示右下角对话框启动器箭头
ItemsRibbonGroupItemList分组内的项集合

RibbonButton 常用属性

属性类型说明
TextLine1string按钮文字第一行
TextLine2string按钮文字第二行
ImageLargeImage大图标(Large 模式显示,通常 32×32)
ImageSmallImage小图标(Medium/Small 模式显示,通常 16×16)
ButtonTypeGroupButtonType按钮类型(Push / Check / DropDown / Split)
ItemSizeCurrentGroupItemSize当前显示尺寸(Large / Medium / Small)
KryptonCommandKryptonCommand绑定的命令对象

快速上手

基本 Ribbon 结构(代码创建)

using Krypton.Ribbon;

// KryptonRibbon 必须放在 KryptonForm 上
// 在设计器中拖放后自动 Dock 到顶部

// 创建选项卡
var tabHome = new RibbonTab("开始");

// 创建分组
var groupClipboard = new RibbonGroup();
groupClipboard.TextLine1 = "剪贴板";
groupClipboard.Image = Properties.Resources.clipboard_icon;

// 创建按钮
var btnPaste = new RibbonButton();
btnPaste.TextLine1 = "粘贴";
btnPaste.ImageLarge = Properties.Resources.paste_32;
btnPaste.ButtonType = GroupButtonType.Split;  // 带下拉的分割按钮
btnPaste.Click += (s, e) => DoPaste();

var btnCut = new RibbonButton();
btnCut.TextLine1 = "剪切";
btnCut.ImageSmall = Properties.Resources.cut_16;

var btnCopy = new RibbonButton();
btnCopy.TextLine1 = "复制";
btnCopy.ImageSmall = Properties.Resources.copy_16;

// 组装层次
groupClipboard.Items.Add(btnPaste);
groupClipboard.Items.Add(btnCut);
groupClipboard.Items.Add(btnCopy);
tabHome.Groups.Add(groupClipboard);

// 添加到 Ribbon
kryptonRibbon1.RibbonTabs.Add(tabHome);

应用程序菜单

// 设置应用程序按钮图标
kryptonRibbon1.RibbonAppButton.AppButtonImage = Properties.Resources.app_icon;

// 添加菜单项
var menuNew = new KryptonRibbonAppMenuItem("新建", Properties.Resources.new_icon);
menuNew.Click += (s, e) => NewDocument();

var menuOpen = new KryptonRibbonAppMenuItem("打开", Properties.Resources.open_icon);
menuOpen.Click += (s, e) => OpenDocument();

var menuRecent = new KryptonRibbonAppRecentDocsMenuItem("最近文档");

kryptonRibbon1.RibbonAppButton.AppButtonMenuItems.Add(menuNew);
kryptonRibbon1.RibbonAppButton.AppButtonMenuItems.Add(menuOpen);
kryptonRibbon1.RibbonAppButton.AppButtonMenuItems.Add(menuRecent);

快速访问工具栏(QAT)

// 添加快速访问按钮
var qatSave = new RibbonButton();
qatSave.ImageSmall = Properties.Resources.save_16;
qatSave.ToolTipTitle = "保存";
qatSave.Click += (s, e) => SaveDocument();

kryptonRibbon1.QuickAccessToolbar.Items.Add(qatSave);

进阶用法

上下文选项卡(Contextual Tab)

// 创建上下文选项卡组(选中特定对象时才显示)
var ctxGroup = new RibbonContextualTabGroup();
ctxGroup.Text = "图片工具";
ctxGroup.ContextColor = Color.Orange;
kryptonRibbon1.ContextualTabGroups.Add(ctxGroup);

// 创建属于该组的选项卡
var tabFormat = new RibbonTab("格式");
tabFormat.ContextualTabGroup = ctxGroup;
kryptonRibbon1.RibbonTabs.Add(tabFormat);

// 选中图片时显示
ctxGroup.Visible = true;

// 取消选中时隐藏
ctxGroup.Visible = false;

分组对话框启动器

var groupFont = new RibbonGroup();
groupFont.TextLine1 = "字体";
groupFont.DialogBoxLauncher = true;  // 显示右下角小箭头
groupFont.DialogBoxLauncherClick += (s, e) =>
{
    // 打开字体设置对话框
    using (var dlg = new FontDialog())
    {
        if (dlg.ShowDialog() == DialogResult.OK)
            ApplyFont(dlg.Font);
    }
};

RibbonComboBox 与 RibbonCheckBox

// 组合框
var comboStyle = new RibbonComboBox();
comboStyle.TextLine1 = "样式";
comboStyle.ComboBoxWidth = 120;
comboStyle.Items.Add("标题 1");
comboStyle.Items.Add("标题 2");
comboStyle.Items.Add("正文");
comboStyle.SelectedIndexChanged += (s, e) => ApplyStyle(comboStyle.Text);

// 复选框
var chkBold = new RibbonCheckBox();
chkBold.TextLine1 = "粗体";
chkBold.CheckedChanged += (s, e) => ToggleBold(chkBold.Checked);

groupFont.Items.Add(comboStyle);
groupFont.Items.Add(chkBold);
提示:KryptonRibbon 必须放在 KryptonForm(而非普通 Form)上才能正确渲染。在 LCode 设计器中,先确保窗体基类为 KryptonForm,再从工具箱拖放 KryptonRibbon。Ribbon 会自动 Dock 到窗体顶部,无需手动设置 Dock 属性。

对应示例项目

📁 Source/Krypton Ribbon Examples/

包含多个子项目:

相关控件