简介

KryptonRadioButton 是增强型单选按钮控件,替代标准 System.Windows.Forms.RadioButton。它跟随 Krypton 主题渲染,同一容器内的多个单选按钮自动互斥(只能选中一个)。适合在少量固定选项(2~5 个)中做单选,如主题选择、导出格式、性别选择等。

KryptonRadioButton 示例截图
KryptonRadioButton 单选按钮组

常用属性

属性类型说明
Values.Textstring单选按钮旁的文字
Checkedbool是否选中
AutoCheckbool点击时是否自动切换选中状态
LabelStyleLabelStyle文字标签风格
StateCommon.ShortText.FontFont文字字体
StateCommon.ShortText.Color1Color文字颜色
StateDisabled.ShortText.Color1Color禁用时文字颜色
StateCheckedNormal.ShortText.Color1Color选中状态文字颜色
CheckedIndicatorStyleIndicatorStyle单选圆点指示器风格
AutoSizebool是否根据内容自动调整大小

快速上手

基本用法(主题选择)

using Krypton.Toolkit;

// 创建单选按钮组(放在同一容器内自动互斥)
var panel = new KryptonPanel();
panel.Location = new Point(20, 20);
panel.Size = new Size(200, 120);

var rbLight = new KryptonRadioButton();
rbLight.Values.Text = "浅色主题";
rbLight.Checked = true;
rbLight.Location = new Point(10, 10);

var rbDark = new KryptonRadioButton();
rbDark.Values.Text = "深色主题";
rbDark.Location = new Point(10, 45);

var rbSystem = new KryptonRadioButton();
rbSystem.Values.Text = "跟随系统";
rbSystem.Location = new Point(10, 80);

panel.Controls.AddRange(new Control[] { rbLight, rbDark, rbSystem });
this.Controls.Add(panel);

// 监听选择变化
rbLight.CheckedChanged += (s, e) => { if (rbLight.Checked) ApplyTheme("Light"); };
rbDark.CheckedChanged += (s, e) => { if (rbDark.Checked) ApplyTheme("Dark"); };
rbSystem.CheckedChanged += (s, e) => { if (rbSystem.Checked) ApplyTheme("System"); };

获取当前选中项

// 遍历容器找到选中的单选按钮
string GetSelectedTheme(Control container)
{
    foreach (Control ctrl in container.Controls)
    {
        if (ctrl is KryptonRadioButton rb && rb.Checked)
            return rb.Values.Text;
    }
    return null;
}

// 保存设置时调用
string theme = GetSelectedTheme(panel);
Settings.Theme = theme;

进阶用法

自定义选中外观

// 选中时文字变为翡翠绿
rbLight.StateCheckedNormal.ShortText.Color1 = Color.FromArgb(15, 118, 110);
rbLight.StateCheckedNormal.ShortText.Font =
    new Font("Microsoft YaHei UI", 10f, FontStyle.Bold);

动态生成单选组

// 根据配置动态生成导出格式选项
var formats = new[] { "PDF", "Word", "Excel", "HTML" };
var grpFormat = new KryptonGroupBox();
grpFormat.Values.Text = "导出格式";
grpFormat.Location = new Point(20, 160);
grpFormat.Size = new Size(200, 150);

int y = 5;
foreach (var fmt in formats)
{
    var rb = new KryptonRadioButton();
    rb.Values.Text = fmt;
    rb.Location = new Point(10, y);
    rb.AutoSize = true;
    grpFormat.Panel.Controls.Add(rb);
    y += 32;
}

// 默认选中第一个
((KryptonRadioButton)grpFormat.Panel.Controls[0]).Checked = true;
提示:单选按钮的互斥行为基于父容器——同一个容器内的 KryptonRadioButton 自动互斥。如果需要两组独立的单选按钮,请将它们放在不同的容器(如两个 KryptonPanel 或 KryptonGroupBox)中。

对应示例项目

📁 Source/Krypton Toolkit Examples/KryptonRadioButton Examples/

包含:基本单选组、动态生成、自定义外观、分组互斥演示。

相关控件