Search code examples
c#winformsradio-buttongroupboxselectedindex

Is there a way to control all radio buttons through one control? Instead of passing a control for each radio button (C#)


I am currently creating an online shop on winform in c#.

At the moment I am creating a 'shopping basket' related textbox where if a user clicks on a particular radio button the textbox shows the description of the product in the text box.

I have grouped my radio buttons in a group box and would like to know whether there is anything equivalent to a 'SelectedIndex' command for all radio buttons? Thanks.


Solution

  • Simply subscribe all radio buttons to the same event. Then you can act on which is checked and act accordingly instead of having duplicate code for each button.
    Below is a simple example that set a text box's Text property to display which is checked.

    Form class

    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!";
        }
    }
    

    In the .designer.cs file

    //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);