单选按钮控件

RadioEx 是一个功能丰富的单选按钮控件,支持多种样式、分组管理、自定义颜色等功能。适用于单选选项、互斥选择等场景

RadioEx 单选按钮控件

控件名称

RadioEx

中文名称

单选按钮控件

控件优点

RadioEx 是一个功能丰富的单选按钮控件,支持多种样式、分组管理、自定义颜色等功能。适用于单选选项、互斥选择等场景。

主要特性

  • 多种样式:支持默认、边框、卡片、按钮四种样式
  • 分组管理:支持通过 GroupName 进行分组
  • 自定义颜色:支持自定义各种状态下的颜色
  • 圆角设置:支持设置圆角半径
  • 互斥选择:同一分组内的单选按钮自动互斥

重要参数说明

基本属性

属性名 类型 默认值 说明
Checked bool false 是否选中
RadioStyle RadioStyle Default 单选按钮样式
Text string "Radio" 显示文本
GroupName string "" 分组名称

单选按钮样式(RadioStyle)

样式值 说明
Default 默认样式
Border 边框样式
Card 卡片样式
Button 按钮样式

外观属性

属性名 类型 默认值 说明
BoxColor Color 26, 188, 156 单选框颜色
BorderWidth int 1 边框宽度
BorderColor Color 192, 192, 192 边框颜色
Radius int 4 圆角半径
CheckBoxSize int 16 单选框大小
CheckBoxTextMargin int 8 单选框与文本间距
TextAlign ContentAlignment MiddleLeft 文本对齐方式
FollowGlobalTheme bool true 是否跟随全局主题(暗/亮模式)

选中状态颜色

属性名 类型 默认值 说明
SelectedBorderColor Color 26, 188, 156 选中边框颜色
SelectedBoxColor Color 26, 188, 156 选中单选框颜色
SelectedFillColor Color 240, 249, 255 选中填充颜色
SelectedForeColor Color 26, 188, 156 选中文本颜色

填充属性

属性名 类型 默认值 说明
EnabledFill bool true 是否启用填充
FillColor Color White 填充颜色

组合模式

属性名 类型 默认值 说明
JoinMode TJoinMode None 组合模式

重要事件

事件名 说明
SelectedChanged 选中状态改变时触发
PropertyChanged 属性值改变时触发

使用示例

基本使用

// 创建单选按钮
RadioEx radio1 = new RadioEx();
radio1.Text = "选项1";
radio1.GroupName = "Group1";
radio1.Size = new Size(120, 24);
this.Controls.Add(radio1);

RadioEx radio2 = new RadioEx();
radio2.Text = "选项2";
radio2.GroupName = "Group1";
radio2.Size = new Size(120, 24);
this.Controls.Add(radio2);

// 选中状态改变事件
radio1.SelectedChanged += (sender, e) =>
{
    if (radio1.Checked)
    {
        Console.WriteLine("选项1被选中");
    }
};

不同样式

// 默认样式
radio1.RadioStyle = RadioStyle.Default;

// 边框样式
radio2.RadioStyle = RadioStyle.Border;

// 卡片样式
radio3.RadioStyle = RadioStyle.Card;

// 按钮样式
radio4.RadioStyle = RadioStyle.Button;

颜色自定义

// 设置颜色
radio.BoxColor = Color.Blue;
radio.BorderColor = Color.Gray;
radio.SelectedBorderColor = Color.Blue;
radio.SelectedBoxColor = Color.Blue;
radio.SelectedFillColor = Color.LightBlue;
radio.SelectedForeColor = Color.Blue;

分组管理

// 第一组
RadioEx radioA1 = new RadioEx();
radioA1.Text = "A1";
radioA1.GroupName = "GroupA";

RadioEx radioA2 = new RadioEx();
radioA2.Text = "A2";
radioA2.GroupName = "GroupA";

// 第二组
RadioEx radioB1 = new RadioEx();
radioB1.Text = "B1";
radioB1.GroupName = "GroupB";

RadioEx radioB2 = new RadioEx();
radioB2.Text = "B2";
radioB2.GroupName = "GroupB";

获取选中项

// 获取分组中选中的单选按钮
private RadioEx GetSelectedRadio(string groupName)
{
    foreach (Control control in this.Controls)
    {
        if (control is RadioEx radio && 
            radio.GroupName == groupName && 
            radio.Checked)
        {
            return radio;
        }
    }
    return null;
}

// 使用示例
var selected = GetSelectedRadio("Group1");
if (selected != null)
{
    Console.WriteLine($"选中了:{selected.Text}");
}

数据绑定

// 属性改变事件
radio.PropertyChanged += (sender, e) =>
{
    if (e.PropertyName == nameof(RadioEx.Checked))
    {
        Console.WriteLine($"选中状态已更改:{radio.Checked}");
    }
};

注意事项

  1. 分组管理:同一 GroupName 的单选按钮会自动互斥
  2. 样式选择:不同样式适用于不同场景,可根据需求选择
  3. 圆角半径:Radius 为 0 时为直角
  4. 默认选中:设置 Checked 为 true 时会自动取消同组其他按钮的选中状态
  5. 主题适配:支持暗/亮主题模式,自动调整文字颜色(可通过 FollowGlobalTheme 控制)