在单独的面板中配对单选按钮

本文关键字:单选按钮 单独 | 更新日期: 2023-09-27 18:18:27

我有一个windows表单应用程序,它在表单中显示了一些用户控件。每个用户控件都有一个单选按钮。是否可以手动配对单选按钮,以便同时只能选择其中一个?我的另一个选择是在单击单选按钮时检查每个单选按钮,这样所有其他单选按钮都不被选中。

在单独的面板中配对单选按钮

        RadioButton rb1 = new RadioButton { Text = "RB1" };
        RadioButton rb2 = new RadioButton { Text = "RB2" };
        RadioButtonGroup rgb = new RadioButtonGroup(rb1, rb2);
        foreach (RadioButton rb in new [] { rb1, rb2 }) {
            Form f = new Form { Text = rb.Text };
            f.Controls.Add(rb);
            f.Show();
            rb.CheckedChanged += delegate {
                MessageBox.Show(rb.Text + ": " + rb.Checked);
            };
        }

private class RadioButtonGroup {
    RadioButton[] radioButtons = null;
    public RadioButtonGroup(params RadioButton[] radioButtons) {
        this.radioButtons = radioButtons;
        foreach (var rb in radioButtons) {
            rb.AutoCheck = false;
            rb.Click += rb_Click;
        }
    }
    void rb_Click(object sender, EventArgs e) {
        foreach (RadioButton rb in radioButtons)
            rb.Checked = (rb == sender);
    }
}