简介

KryptonManager 是全局主题管理器组件(非可视控件),负责管理整个应用程序的 Krypton 主题(Palette)。它通常从工具箱拖放到窗体设计器的组件栏中,通过修改 GlobalPaletteMode 属性即可一键切换所有 Krypton 控件的主题风格,支持内置主题和自定义调色板。

KryptonManager 示例截图
KryptonManager 在组件栏中的显示及主题切换效果

常用属性

属性类型说明
GlobalPaletteModePaletteMode全局主题模式(Office2010Blue / ProfessionalSystem 等)
GlobalPaletteIPalette自定义调色板对象(优先于 GlobalPaletteMode)
ToolkitPaletteIPaletteToolkit 控件专用调色板
RibbonPaletteIPaletteRibbon 控件专用调色板
NavigatorPaletteIPaletteNavigator 控件专用调色板
DockingPaletteIPaletteDocking 控件专用调色板
WorkspacePaletteIPaletteWorkspace 控件专用调色板
AllowFormChromebool是否允许窗体使用 Aero 玻璃边框
RenderChromebool是否渲染窗体 Chrome 效果

快速上手

设计器中使用

// 在 LCode 设计器中:
// 1. 从工具箱「LCode Components」拖放 KryptonManager 到窗体
// 2. 在属性面板中设置 GlobalPaletteMode 选择主题
// 3. 所有 Krypton 控件自动跟随主题变化

// 等效代码:
public partial class MainForm : KryptonForm
{
    private KryptonManager kryptonManager1;

    private void InitializeComponent()
    {
        this.kryptonManager1 = new KryptonManager();
        // 设置全局主题为 Office 2010 蓝色
        this.kryptonManager1.GlobalPaletteMode = PaletteMode.Office2010Blue;
    }
}

运行时切换主题

// 通过下拉菜单让用户选择主题
var cmbTheme = new KryptonComboBox();
cmbTheme.Items.AddRange(new object[]
{
    "Office 2010 Blue",
    "Office 2010 Silver",
    "Office 2010 Black",
    "Professional System",
    "Sparkle Blue",
    "Sparkle Orange",
    "Sparkle Purple"
});
cmbTheme.SelectedIndex = 0;

cmbTheme.SelectedIndexChanged += (s, e) =>
{
    switch (cmbTheme.SelectedIndex)
    {
        case 0: kryptonManager1.GlobalPaletteMode = PaletteMode.Office2010Blue; break;
        case 1: kryptonManager1.GlobalPaletteMode = PaletteMode.Office2010Silver; break;
        case 2: kryptonManager1.GlobalPaletteMode = PaletteMode.Office2010Black; break;
        case 3: kryptonManager1.GlobalPaletteMode = PaletteMode.ProfessionalSystem; break;
        case 4: kryptonManager1.GlobalPaletteMode = PaletteMode.SparkleBlue; break;
        case 5: kryptonManager1.GlobalPaletteMode = PaletteMode.SparkleOrange; break;
        case 6: kryptonManager1.GlobalPaletteMode = PaletteMode.SparklePurple; break;
    }
};

进阶用法

使用自定义调色板

// 加载自定义 XML 调色板文件
var customPalette = new KryptonPalette();
customPalette.Import("MyTheme.xml");

// 应用自定义调色板
kryptonManager1.GlobalPalette = customPalette;

// 保存当前调色板到文件
customPalette.Export("MyTheme.xml");

记忆用户主题偏好

// 启动时恢复上次主题
private void MainForm_Load(object sender, EventArgs e)
{
    var savedTheme = Properties.Settings.Default.ThemeMode;
    if (Enum.TryParse<PaletteMode>(savedTheme, out var mode))
    {
        kryptonManager1.GlobalPaletteMode = mode;
    }
}

// 切换主题时保存偏好
private void OnThemeChanged(PaletteMode mode)
{
    kryptonManager1.GlobalPaletteMode = mode;
    Properties.Settings.Default.ThemeMode = mode.ToString();
    Properties.Settings.Default.Save();
}
提示:KryptonManager 是非可视组件,运行时不可见。通常只需在启动窗体中放置一个即可管理全局主题。如果不同模块需要不同主题,可分别设置 ToolkitPaletteRibbonPalette 等属性。

对应示例项目

📁 Source/Krypton Toolkit Examples/KryptonManager Examples/

包含:主题切换演示、自定义调色板导入导出、多组件独立主题。

相关控件