KryptonRadioButton ✓ LCode 已集成 Toolkit
命名空间:Krypton.Toolkit · 程序集:Krypton.Toolkit.dll
简介
KryptonRadioButton 是增强型单选按钮控件,替代标准 System.Windows.Forms.RadioButton。它跟随 Krypton 主题渲染,同一容器内的多个单选按钮自动互斥(只能选中一个)。适合在少量固定选项(2~5 个)中做单选,如主题选择、导出格式、性别选择等。
常用属性
| 属性 | 类型 | 说明 |
|---|---|---|
Values.Text | string | 单选按钮旁的文字 |
Checked | bool | 是否选中 |
AutoCheck | bool | 点击时是否自动切换选中状态 |
LabelStyle | LabelStyle | 文字标签风格 |
StateCommon.ShortText.Font | Font | 文字字体 |
StateCommon.ShortText.Color1 | Color | 文字颜色 |
StateDisabled.ShortText.Color1 | Color | 禁用时文字颜色 |
StateCheckedNormal.ShortText.Color1 | Color | 选中状态文字颜色 |
CheckedIndicatorStyle | IndicatorStyle | 单选圆点指示器风格 |
AutoSize | bool | 是否根据内容自动调整大小 |
快速上手
基本用法(主题选择)
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/
包含:基本单选组、动态生成、自定义外观、分组互斥演示。