Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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_Visual Studio_Radio Button_Controls - Fatal编程技术网

C# 在单独的面板中配对单选按钮

C# 在单独的面板中配对单选按钮,c#,winforms,visual-studio,radio-button,controls,C#,Winforms,Visual Studio,Radio Button,Controls,我有一个windows窗体应用程序,它在窗体中显示一些用户控件。每个用户控件都有一个单选按钮。是否可以手动配对单选按钮,以便同时只能选择其中一个?我的另一个选择是在单击单选按钮时检查每个单选按钮,以便取消选中所有其他单选按钮。向我们展示您的尝试??!!将单选按钮放在GroupBox中以建立分组。@rheitzman这不是我的解决方案,因为我的单选按钮位于不同的用户控件中。每个usercontrol都有多个控件(文本框、标签等),用于添加到创建usercontrol的表单中的每个项。我需要一种方法

我有一个windows窗体应用程序,它在窗体中显示一些用户控件。每个用户控件都有一个单选按钮。是否可以手动配对单选按钮,以便同时只能选择其中一个?我的另一个选择是在单击单选按钮时检查每个单选按钮,以便取消选中所有其他单选按钮。

向我们展示您的尝试??!!将单选按钮放在GroupBox中以建立分组。@rheitzman这不是我的解决方案,因为我的单选按钮位于不同的用户控件中。每个usercontrol都有多个控件(文本框、标签等),用于添加到创建usercontrol的表单中的每个项。我需要一种方法来通知用户选择了哪个usercontrol,所以我在usercontrol中添加了一个radiobutton。anwser厌恶profided对我来说是一个完美的解决方案。谢谢,我必须添加一个
AddRadioButton(RadioButton rb)
方法,以便在运行时添加RadioButton。在我的解决方案中,可以随时添加UserControls。我对
rb.Checked=(rb==sender)的函数感到惊讶
你能解释一下为什么
(rb==sender)
返回布尔值吗?@MaikoKingma每当你用
winforms
控件注册
事件
监听器时,委托监听器方法遵循
NameOfVariable\u NameOfEvent(object sender,EventArgs e)
(或它的一些变体,带有更具体的
EventArgs
)。
sender
参数是触发/触发事件的
控件。因此
(rb==sender)
是说,如果单选按钮是被点击的,那么就检查它,因为它触发了事件。显然,这对
复选框不起作用,因为它们有切换行为。但是
单选按钮总是在点击时被选中。非常感谢,我肯定会经常使用它。
        RadioButton rb1 = new RadioButton { Text = "RB1" };
        RadioButton rb2 = new RadioButton { Text = "RB2" };
        RadioButtonGroup rgb = new RadioButtonGroup(rb1, rb2);

        foreach (RadioButton rb in new [] { rb1, rb2 }) {
            Form f = new Form { Text = rb.Text };
            f.Controls.Add(rb);
            f.Show();
            rb.CheckedChanged += delegate {
                MessageBox.Show(rb.Text + ": " + rb.Checked);
            };
        }



private class RadioButtonGroup {
    RadioButton[] radioButtons = null;
    public RadioButtonGroup(params RadioButton[] radioButtons) {
        this.radioButtons = radioButtons;
        foreach (var rb in radioButtons) {
            rb.AutoCheck = false;
            rb.Click += rb_Click;
        }
    }

    void rb_Click(object sender, EventArgs e) {
        foreach (RadioButton rb in radioButtons)
            rb.Checked = (rb == sender);
    }
}