Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将嵌套组框中的单选按钮设置为与该组框外的单选按钮相同的组_C#_Winforms_Radio Button - Fatal编程技术网

C# 如何将嵌套组框中的单选按钮设置为与该组框外的单选按钮相同的组

C# 如何将嵌套组框中的单选按钮设置为与该组框外的单选按钮相同的组,c#,winforms,radio-button,C#,Winforms,Radio Button,我有winform应用程序(.NET 4.0) 有没有办法手动设置一组单选按钮 我有四个单选按钮,其中两个在分组框内,另外两个在分组框外。如何将所有控件设置为同一组?有一个名为“验证”组的属性或类似属性,它将所有控件分组为一个验证。仅检查其中一个。其他人取消选中。这可能在另一篇文章中得到了回答,听起来是一样的: 这是公认的解决方案: 恐怕你得手动处理。。。没那么糟 实际上,你可以把所有的单选按钮存储在一个列表中, 并对所有事件使用单个事件处理程序: private List<RadioB

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

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


我有四个单选按钮,其中两个在分组框内,另外两个在分组框外。如何将所有控件设置为同一组?

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

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

这是公认的解决方案:

恐怕你得手动处理。。。没那么糟 实际上,你可以把所有的单选按钮存储在一个列表中, 并对所有事件使用单个事件处理程序:

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;
        }
    }
}
private List\u radioButtonGroup=new List();
私有void单选按钮\u CheckedChanged(对象发送方,事件参数e)
{
RadioButton rb=(RadioButton)发送器;
如果(rb.选中)
{
foreach(RadioButton组中的其他RadioButton)
{
如果(其他==rb)
{
继续;
}
其他。选中=错误;
}
}
}
编辑:这里还有一个问题问同样的问题:
我不确定这在WinForms中是否可行

根据文件:

给定容器(如窗体)中的所有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; }
        }
      }
   }
}
公共类按钮组{
私人IList放射组;
公共按钮组(IEnumerable选择){
radiogroup=新列表(选择);
foreach(选择中的RadioButton项){
item.CheckedChanged+=取消勾选;
}
}
私有void取消勾选(对象发送方,事件参数e){
如果(((单选按钮)发送器)。选中){
foreach(radiogroup中的RadioButton项){
如果(item!=sender){item.Checked=false;}
}
}
}
}

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

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


因此,在winforms中对单选按钮进行分组的唯一方法是将它们放在同一个容器中(通常为groupbox)。

很抱歉,我找不到这样的属性。您不需要解释所有内容,只需一个引用即可。它在webforms中可用,而在winforms中不可用。而且它不是“验证”组,而是way@nawfal这是因为在上一篇帖子中,海报要求提供winform中不可用的Groupname属性。包括你在内的整个世界都没有回答。以前的帖子?以前的哪个帖子?本页将为此处提出的问题提供答案!OP不需要groupname,相反,OP需要一种对单选按钮进行分组的方法,以使其显示标准行为。他得到了答案,也就是说他得到了答案。如果不是这样的要求,那么说一些事情是不可能的,这是毫无意义的。我仍然坚持我的答案,这也澄清了OP找不到GroupName属性的原因。请参考@iefpw发布的答案和OP的评论。我的答案是否相关取决于人们。了解deb的观点,OP在哪里提到他找不到群组名称?如果他如此清楚地提到了它的winforms和他的要求(这与组名无关),为什么要发布一个答案abt webforms?它最多应该是一个评论,以帮助用户更多。其他人发布的答案(显然是错误的,不像你)不会支持你。而你的答案说“除了把它们放在一个容器里没有别的办法”是错误的。不管怎样,你的答案在这里都是无效的。令人惊讶的是,在会员们给出有效答案数小时后,你才说出这一点。我只是想在这里学习一下礼仪