有没有办法通过一个控件控制所有单选按钮?而不是传递每个单选按钮的控件(C#)

时间:2017-04-24 21:44:29

标签: c# winforms radio-button groupbox selectedindex

我目前正在使用c#在winform上创建一个在线商店。

目前我正在创建一个购物篮'相关文本框,如果用户单击特定单选按钮,则文本框会在文本框中显示产品说明。

我已将单选按钮分组在一个分组框中,并想知道是否有与所有单选按钮的' SelectedIndex' 命令相同的内容?感谢。

2 个答案:

答案 0 :(得分:0)

如果您希望一次能够选择多个单选按钮,我建议您使用复选框而不是单选按钮。您可以将所有事件分配到同一个事件,并控制选中哪个复选框。

    private void checkBox_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox checkBoxControl = (CheckBox) sender; // You can use this variable to see which one of the checkbox is checked.
    }

答案 1 :(得分:0)

只需将所有单选按钮订阅到同一事件即可。然后你可以采取行动,对其进行检查并采取相应行动,而不是每个按钮都有重复的代码 下面是一个简单的示例,用于设置文本框的Text属性以显示已检查的属性。

表单类

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
    }

    private void radioButtons_CheckedChanged(object sender, EventArgs e)
    {
        //Do whatever you need to do here. I'm simple setting some text based off
        //the name of the checked radio button.

        System.Windows.Forms.RadioButton rb = (sender as System.Windows.Forms.RadioButton);
        textBox1.Text = $"{rb.Name} is checked!";
    }
}

在.designer.cs文件中

//Note that the EventHandler for each is the same.
this.radioButton3.CheckedChanged += new System.EventHandler(this.radioButtons_CheckedChanged);
this.radioButton2.CheckedChanged += new System.EventHandler(this.radioButtons_CheckedChanged);
this.radioButton1.CheckedChanged += new System.EventHandler(this.radioButtons_CheckedChanged);