greg dorian
greg dorian

Reputation: 134

how to know which radiobutton is checked?

i have this part of code: (in the click event of a button)

           foreach (RadioButton rb in grbFiltro.Controls.OfType<RadioButton>())
       {
           if (((RadioButton)rb).Checked)
           {
               switch (true)
               {
                   case rbt1.Checked:
                       //do something
                       break;
                   case rbt2.Checked:
                      //do something
                       break;
                   case rbt3.Checked:
                        //do something
                      break;
               }
           }
       }

but there´s a error converting radiobutton to string in ---> case rbt1.Checked

how do i fix this, or what else can i use?

Upvotes: 1

Views: 9076

Answers (3)

Robert
Robert

Reputation: 4406

You have 25 buttons so I would probably do something like

 IEnumerable<RadioButton> buttons = grbFiltro.Controls.OfType<RadioButton>();
    foreach (var Button in buttons)
    {
         if (Button.Checked)
         {
             //Do Something
         }
     }

If you need to do something different with each button then you would have an if / else chain that does based on what you need, but I am guessing you are wanting to store the value selected and do something with that.

Upvotes: 1

dognose
dognose

Reputation: 20889

you can also add a listener on CheckedChange and always store the currently selected Radio button in a field. Then you just Need to read that value, once your confirmbutton has been clicked. This is Handy if you have more than 10 radiobuttons

private RadioButton selectedButton;

//handler for Radio Buttons.
private void onRadioChange(Object sender, EventArgs e){
    if (((RadioButton)sender).Checked)
       this.selectedButton = (RadioButton)sender;
}

// handler for confirm button.
private void confirm(Object sender, EventArgs e){
   MessageBox.show(selectedButton.name + " selected");
}

untestet, but the way should work.

Upvotes: 0

paul
paul

Reputation: 22001

var rb = grbFiltro.Controls.OfType<RadioButton>()
             .SingleOrDefault(rb => rb.Checked.GetValueOrDefault()) as RadioButton;

if (rb!=null)
    switch (rb.Name)
           {
               case "button1":
                   //do something
                   break;
               case "button2":
                  //do something
                   break;
               case "button3":
                    //do something
                  break;
           }

Upvotes: 1

Related Questions