RadioButton 单选按钮控件

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 的区别

对比项RadioButtonCheckBox
选择模式互斥,只能选一个独立,可多选
外观圆形按钮方形勾选框
分组方式按父容器自动分组无自动分组
典型用途性别、学历等互斥选项兴趣爱好、权限等多选场景

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注