Reputation: 134
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
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
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
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