单选按钮控件
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}");
}
};
注意事项
- 分组管理:同一 GroupName 的单选按钮会自动互斥
- 样式选择:不同样式适用于不同场景,可根据需求选择
- 圆角半径:Radius 为 0 时为直角
- 默认选中:设置 Checked 为 true 时会自动取消同组其他按钮的选中状态
- 主题适配:支持暗/亮主题模式,自动调整文字颜色(可通过 FollowGlobalTheme 控制)