我有一个表单,里面有多个单选按钮,每次只能选择一个。
有些单选按钮是相关联的,需要通过标题进行解释。为此,我将它们放在了一个Groupbox中。但是这样一来,Groupbox中的单选按钮与外部的单选按钮不再相互关联,可能会出现两个单选按钮都被选中的情况。
有没有办法将这些单选按钮连接起来,使它们彼此作用?或者,有没有比使用Groupbox更好的方式来分组和解释这些单选按钮?
我有一个表单,里面有多个单选按钮,每次只能选择一个。
有些单选按钮是相关联的,需要通过标题进行解释。为此,我将它们放在了一个Groupbox中。但是这样一来,Groupbox中的单选按钮与外部的单选按钮不再相互关联,可能会出现两个单选按钮都被选中的情况。
有没有办法将这些单选按钮连接起来,使它们彼此作用?或者,有没有比使用Groupbox更好的方式来分组和解释这些单选按钮?
根据MSDN的设计,RadioButton会被分组放置在容器内。
当用户选择一个选项按钮(也称为单选按钮)时,其他按钮将自动清除。在给定容器(如窗体)中的所有RadioButton控件构成一组。要在一个表单上创建多个组,请将每个组放在其自己的容器中,例如GroupBox或Panel控件。
您可以尝试为您想要链接的RadioButtons使用通用事件处理程序,并自行处理Checking/UnChecking,或者将RadioButtons放置在GroupBox上方,不将它们添加到GroupBox中,然后BringToFront。
var rbuttons = new List<RadioButton>{ radioButton1, radioButton2, radioButton3, radioButton4 }; //or get them dynamically..
rbuttons.ForEach(r => r.CheckedChanged += (o, e) =>
{
if (r.Checked) rbuttons.ForEach(rb => rb.Checked = rb == r);
});
private void radio1_CheckedChanged(object sender, EventArgs e)
{
if (radio1.Checked)
{
// do stuff
radio2.Checked = false;
}
}
private void radio2_CheckedChanged(object sender, EventArgs e)
{
if (radio2.Checked)
{
// do stuff
radio1.Checked = false;
}
}