简介

KryptonForm 是增强型窗体基类,所有使用 Krypton 主题体系的窗体都应继承它而非标准 System.Windows.Forms.Form。它提供 Krypton 主题渲染的标题栏、边框、背景,支持自定义标题栏按钮(ButtonSpec)、状态外观,并确保窗体内所有 Krypton 控件的主题一致性。

KryptonForm 示例截图
KryptonForm 在不同主题下的窗体外观

常用属性

属性类型说明
Textstring窗体标题栏文字
IconIcon标题栏图标
FormBorderStyleFormBorderStyle窗体边框样式
StartPositionFormStartPosition窗体初始位置
ButtonSpecs集合标题栏附加按钮集合(ButtonSpec)
StateCommon.Back.Color1Color窗体客户区背景色
StateCommon.Header.Back.Color1Color标题栏背景色
StateCommon.Header.Content.ShortText.Color1Color标题栏文字颜色
StateCommon.Border.Color1Color窗体边框颜色
StateActive.Header.Back.Color1Color激活状态标题栏背景色
StateInactive.Header.Back.Color1Color非激活状态标题栏背景色

快速上手

基本用法(继承 KryptonForm)

using Krypton.Toolkit;

// 所有 Krypton 窗体必须继承 KryptonForm
public class MainForm : KryptonForm
{
    public MainForm()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        this.Text = "我的 Krypton 应用";
        this.Size = new Size(800, 600);
        this.StartPosition = FormStartPosition.CenterScreen;

        // 添加 Krypton 控件
        var btnOk = new KryptonButton();
        btnOk.Values.Text = "确定";
        btnOk.Location = new Point(20, 20);
        this.Controls.Add(btnOk);
    }
}

// 程序入口
static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());
    }
}

设计器中使用

// 在 LCode 设计器中:
// 1. 新建窗体时选择继承 KryptonForm
// 2. 或手动修改 partial class 声明:
public partial class MyDialog : KryptonForm  // 而非 Form
{
    public MyDialog()
    {
        InitializeComponent();
    }
}

进阶用法

自定义标题栏按钮(ButtonSpec)

public class MainForm : KryptonForm
{
    public MainForm()
    {
        this.Text = "带自定义按钮的窗体";

        // 在标题栏添加帮助按钮
        var specHelp = new ButtonSpecAny();
        specHelp.Type = PaletteButtonSpecStyle.Context;
        specHelp.Text = "?";
        specHelp.ToolTipBody = "打开帮助文档";
        specHelp.Click += (s, e) => ShowHelp();
        this.ButtonSpecs.Add(specHelp);

        // 在标题栏添加设置按钮
        var specSettings = new ButtonSpecAny();
        specSettings.Type = PaletteButtonSpecStyle.Context;
        specSettings.Image = Properties.Resources.icon_settings;
        specSettings.ToolTipBody = "打开设置";
        specSettings.Click += (s, e) => ShowSettings();
        this.ButtonSpecs.Add(specSettings);
    }
}

自定义窗体外观

public class ThemedForm : KryptonForm
{
    public ThemedForm()
    {
        // 自定义客户区背景
        this.StateCommon.Back.Color1 = Color.FromArgb(250, 250, 248);

        // 自定义标题栏
        this.StateActive.Header.Back.Color1 = Color.FromArgb(15, 118, 110);
        this.StateActive.Header.Back.Color2 = Color.FromArgb(13, 148, 136);
        this.StateActive.Header.Content.ShortText.Color1 = Color.White;

        // 非激活时标题栏变暗
        this.StateInactive.Header.Back.Color1 = Color.FromArgb(100, 116, 139);
        this.StateInactive.Header.Back.Color2 = Color.FromArgb(148, 163, 184);

        // 自定义边框
        this.StateCommon.Border.Color1 = Color.FromArgb(15, 118, 110);
    }
}
提示:使用 Krypton 控件体系时,所有窗体都应继承 KryptonForm。如果继承标准 Form,窗体标题栏和边框将不会跟随 Krypton 主题渲染,导致视觉不一致。

对应示例项目

📁 Source/Krypton Toolkit Examples/KryptonForm Examples/

包含:基本窗体、ButtonSpec 标题栏按钮、自定义外观、多主题切换演示。

相关控件