RadioButton 单选按钮控件
RadioButton 是一个在一组选项中只能选择一个的控件。

常用属性
| 属性 | 说明 |
|---|---|
Checked | 指示单选按钮是否已选中(true / false) |
CheckAlign | 复选框在控件中的位置,默认靠左居中 |
Text | 控件关联展示的文本内容 |
Enabled | 是否启用该控件,true 为启用,false 为禁用 |
AutoCheck | 是否单击时自动切换选中状态(默认 true) |
Appearance | 外观样式(Normal 显示为圆圈,Button 显示为按钮) |
this.radioButton1.Checked = true;
this.radioButton1.CheckAlign = ContentAlignment.MiddleRight; // 圆圈显示在右侧
this.radioButton1.Appearance = Appearance.Button; // 显示为按钮样式Code language: JavaScript (javascript)
分组机制
RadioButton 的分组依据是同一个父容器。在同一个父容器中,所有 RadioButton 自动归为一组,只能选中其中一个。
如果在一个窗体中需要有多组独立的单选按钮,必须使用容器控件(如 Panel、GroupBox)进行分组:
// 第一组放在 panel1 中
panel1.Controls.Add(radioButton1);
panel1.Controls.Add(radioButton2);
// 第二组放在 panel2 中
panel2.Controls.Add(radioButton3);
panel2.Controls.Add(radioButton4);Code language: JavaScript (javascript)
这样 panel1 中的 radioButton1 和 radioButton2 为一组,panel2 中的 radioButton3 和 radioButton4 为另一组,两组之间互不干扰,各自可以独立选中一个。
如果不使用容器分组,所有 RadioButton 都直接放在 Form 上,则它们全部属于同一组,整个窗体中只能选中一个。

获取选中项
private void button1_Click(object sender, EventArgs e)
{
if (this.radioButton1.Checked)
{
MessageBox.Show("选中了:" + this.radioButton1.Text);
}
else if (this.radioButton2.Checked)
{
MessageBox.Show("选中了:" + this.radioButton2.Text);
}
}Code language: JavaScript (javascript)
或者遍历容器中的控件:
private void button1_Click(object sender, EventArgs e)
{
foreach (Control ctrl in this.panel1.Controls)
{
if (ctrl is RadioButton rb && rb.Checked)
{
MessageBox.Show("选中了:" + rb.Text);
}
}
}Code language: JavaScript (javascript)
常用事件
| 事件 | 说明 |
|---|---|
CheckedChanged | 选中状态改变时触发 |
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
if (this.radioButton1.Checked)
{
MessageBox.Show("选项1被选中");
}
}Code language: JavaScript (javascript)
与 CheckBox 的区别
| 对比项 | RadioButton | CheckBox |
|---|---|---|
| 选择模式 | 互斥,只能选一个 | 独立,可多选 |
| 外观 | 圆形按钮 | 方形勾选框 |
| 分组方式 | 按父容器自动分组 | 无自动分组 |
| 典型用途 | 性别、学历等互斥选项 | 兴趣爱好、权限等多选场景 |

Previous: PropertyGrid 属性表格控件
Next: RichTextBox 富文本编辑控件