KryptonRibbon ✓ LCode 已集成 Ribbon
命名空间:Krypton.Ribbon · 程序集:Krypton.Ribbon.dll
简介
KryptonRibbon 是仿 Office 风格的功能区控件,提供选项卡(Tab)、分组(Group)和各类命令项(Button、ComboBox、CheckBox 等)的层次化组织结构。它必须放置在 KryptonForm 上,通常 Dock 到窗体顶部。Ribbon 支持快速访问工具栏(QAT)、应用程序菜单、上下文选项卡、分组对话框启动器等高级特性。
控件层次结构
KryptonRibbon
├── RibbonAppButton(应用程序菜单按钮)
├── QuickAccessToolbar(快速访问工具栏)
├── RibbonTabs(选项卡集合)
│ └── RibbonTab(单个选项卡)
│ └── Groups(分组集合)
│ └── RibbonGroup(单个分组)
│ └── Items(项集合)
│ ├── RibbonButton(按钮)
│ ├── RibbonComboBox(组合框)
│ ├── RibbonCheckBox(复选框)
│ ├── RibbonRadioButton(单选按钮)
│ ├── RibbonTextBox(文本框)
│ ├── RibbonSeparator(分隔线)
│ ├── RibbonGallery(图库)
│ ├── RibbonColorButton(颜色按钮)
│ ├── RibbonDateTimePicker(日期选择器)
│ ├── RibbonNumericUpDown(数字调节器)
│ ├── RibbonTrackBar(滑动条)
│ ├── RibbonMaskedTextBox(掩码文本框)
│ ├── RibbonRichTextBox(富文本框)
│ ├── RibbonCustomControl(自定义控件宿主)
│ └── RibbonCluster(按钮簇)
└── ContextualTabGroups(上下文选项卡组)
常用属性
| 属性 | 类型 | 说明 |
|---|---|---|
RibbonTabs | RibbonTabCollection | 选项卡集合 |
SelectedTab | RibbonTab | 当前选中的选项卡 |
RibbonAppButton.AppButtonImage | Image | 应用程序菜单按钮图标 |
RibbonAppButton.AppButtonMenuItems | 集合 | 应用程序菜单项集合 |
QuickAccessToolbar.Visible | bool | 是否显示快速访问工具栏 |
MinimizedMode | bool | 是否处于最小化(折叠)模式 |
AllowMinimizedChange | bool | 是否允许用户切换最小化状态 |
HideRibbonSize | Size | 窗口小于此尺寸时自动隐藏 Ribbon |
PaletteMode | PaletteMode | 调色板模式 |
RibbonGroup 常用属性
| 属性 | 类型 | 说明 |
|---|---|---|
TextLine1 | string | 分组标题第一行 |
TextLine2 | string | 分组标题第二行 |
Image | Image | 分组标题图标 |
DialogBoxLauncher | bool | 是否显示右下角对话框启动器箭头 |
Items | RibbonGroupItemList | 分组内的项集合 |
RibbonButton 常用属性
| 属性 | 类型 | 说明 |
|---|---|---|
TextLine1 | string | 按钮文字第一行 |
TextLine2 | string | 按钮文字第二行 |
ImageLarge | Image | 大图标(Large 模式显示,通常 32×32) |
ImageSmall | Image | 小图标(Medium/Small 模式显示,通常 16×16) |
ButtonType | GroupButtonType | 按钮类型(Push / Check / DropDown / Split) |
ItemSizeCurrent | GroupItemSize | 当前显示尺寸(Large / Medium / Small) |
KryptonCommand | KryptonCommand | 绑定的命令对象 |
快速上手
基本 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/
包含多个子项目:
Ribbon Controls— 演示所有 Ribbon 项类型(Button、ComboBox、Gallery 等)Ribbon Memo Editor— 完整的记事本编辑器(含 Ribbon 布局)Ribbon Application Menu— 应用程序菜单配置Ribbon Quick Access Toolbar— QAT 配置Ribbon Contextual Tabs— 上下文选项卡Ribbon KeyTips— 键盘提示(Alt 快捷键)Ribbon Gallery— 图库控件Ribbon ToolTips— 工具提示