在单独的面板中配对单选按钮
pair radio buttons in seperate panels
我有一个 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);
}
}
我有一个 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);
}
}