【问题标题】:How to set radio buttons in a nested group box as a same group with radio buttons outside of that group box [duplicate]如何将嵌套组框中的单选按钮设置为与该组框外的单选按钮相同的组[重复]
【发布时间】:2012-04-21 20:30:37
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# winforms radio-button


    【解决方案1】:

    这可能已经在另一个帖子中得到了回答,听起来一样:

    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

    【讨论】:

      【解决方案2】:

      我不确定这在 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; }
              }
            }
         }
      }
      

      【讨论】:

        【解决方案3】:

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

        但此功能在 winforms 中不可用。

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

        【讨论】:

        • @nawfal 这是因为在之前的帖子中,海报要求提供 Winform 中不可用的 Groupname 属性。包括你在内的整个世界都没有回答。
        • 上一篇文章?以前的哪个帖子?这个页面是为了回答这里提出的问题! OP 不需要任何组名,相反,OP 想要一种对单选按钮进行分组的方法,以便它表现出标准行为。他得到了答案,这意味着他得到了答案。如果没有要求,说某事是不可能的。
        • 我仍然坚持我的回答,它也阐明了为什么 OP 找不到 GroupName 属性。请参阅@iefpw 发布的答案和 OP 的 cmets。我的回答是相关的还是不让人们决定。
        • 明白点deb,OP在哪里提到他找不到groupName?如果他如此清楚地提到它的 winforms 和他的要求(与组名无关),为什么要发布一个 abt webforms 的 answer?它充其量应该是一个评论,以帮助用户更多。其他人发布答案(显然是错误的,不像你)不会得到你的支持。
        • 总的来说,您的回答是“除了将它们放入容器中之外别无他法”。无论哪种方式,您的答案在这里都是无效的。它是如此令人惊讶,以至于你在成员已经给出有效答案的几个小时后提出了这一点。我只是要求在 SO 学习礼仪
        【解决方案4】:

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

        【讨论】:

        • 很抱歉我找不到这样的房产。您无需解释所有内容,只需一份参考资料即可。
        • 它在 webforms 中而不是在 winforms 中可用。
        • 它不是“Validation”组,它是“GroupName”属性
        猜你喜欢
        • 1970-01-01
        • 2013-05-29
        • 2011-11-03
        • 2014-01-08
        • 2021-11-13
        • 2013-02-28
        • 1970-01-01
        • 2011-07-30
        • 1970-01-01
        相关资源
        最近更新 更多