如何将嵌套组框中的单选按钮设置为具有该组框外部单选按钮的同一组

时间:2012-04-09 13:09:09

标签: c# winforms radio-button

我有winform应用程序(.NET 4.0)

有没有办法手动设置一组单选按钮?

我有四个单选按钮,其中两个位于组合框内,另外两个位于该框外。如何将所有这些设置为同一组?

4 个答案:

答案 0 :(得分:7)

这可能已在另一篇文章中得到解答,听起来是一样的:

Grouping Windows Forms Radiobuttons with different parent controls in C#

这是公认的解决方案:

  

我担心你必须手动处理这个...它并不是那么糟糕   实际上,您可以将所有RadioButton存储在列表中,   并为所有这些使用单个事件处理程序:

private List<RadioButton> _radioButtonGroup = new List<RadioButton>();
private void radioButton_CheckedChanged(object sender, EventArgs e)
{
    RadioButton rb = (RadioButton)sender;
    if (rb.Checked)
    {
        foreach(RadioButton other in _radioButtonGroup)
        {
            if (other == rb)
            {
                continue;
            }
            other.Checked = false;
        }
    }
}

编辑:这是另一个问同样事情的问题: Radiobuttons as a group in different panels

答案 1 :(得分:2)

我不确定这是否可以在WinForms中使用。

根据文件:

  

给定容器中的所有RadioButton控件(例如Form)构成一个组。

您可以自己创建课程

public class ButtonGroup {
   private IList<RadioButton> radiogroup;

   public ButtonGroup(IEnumerable<RadioButton> selection) {
      radiogroup = new List<RadioButton>(selection);
      foreach (RadioButton item in selection) {
          item.CheckedChanged += uncheckOthers;
      }
   }

   private void uncheckOthers(object sender, EventArgs e) {
      if (((RadioButton)sender).Checked) {
        foreach (RadioButton item in radiogroup) {
          if (item != sender) { item.Checked = false; }
        }
      }
   }
}

答案 2 :(得分:1)

GroupName是Web.UI.RadioButton中使用的属性,用于将一组无线电按钮分组为一个单元。具有相同GroupName值的所有单选按钮将形成一个组。

此功能在winforms中不可用。

因此,在winforms中对radiobuttons进行分组的唯一方法是将它们放在同一个容器中(通常是一个分组框)。

答案 3 :(得分:-1)

有一个名为“验证”组的属性或类似的东西,它将所有控件组合成一个验证。只检查其中一个。其他人取消选中。