4

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

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

我有四个单选按钮,其中两个在组框内,另外两个在该框外。如何将它们全部设置为同一个组?

4

4 回答 4

7

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

在 C# 中使用不同的父控件对 Windows 窗体单选按钮进行分组

这是公认的解决方案:

恐怕你必须手动处理这个......实际上并没有那么糟糕,你可以将所有 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 panel

于 2012-04-09T15:13:53.417 回答
2

我不确定这在 WinForms 中是否可行。

根据文档:

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

您可以自己创建课程

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; }
        }
      }
   }
}
于 2012-04-09T15:17:10.477 回答
1

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

但是,此功能在 winforms 中不可用。

所以在winforms中对单选按钮进行分组的唯一方法是将它们放在同一个容器中(通常是一个组合框)。

于 2012-04-10T01:34:06.100 回答
-1

有一个称为“验证”组的属性或类似的属性,它将所有控件分组到一个验证中。仅检查其中之一。其他的取消勾选。

于 2012-04-09T13:26:18.993 回答