How do I get which radio button is checked from a groupbox?

后端 未结 5 1970
你的背包
你的背包 2020-12-09 16:52

I have these groupboxes:

\"Enter

I want to run some code according to checked

相关标签:
5条回答
  • 2020-12-09 17:21

    You can find all checked RadioButtons like

    var buttons = this.Controls.OfType<RadioButton>()
                               .FirstOrDefault(n => n.Checked);
    

    Also take a look at CheckedChanged event.

    Occurs when the value of the Checked property changes.

    0 讨论(0)
  • 2020-12-09 17:23

    Rather than checking all RadioButtons, use the Validated event of the GroupBox.

    private void grpBox_Validated(object sender, EventArgs e)
        {
            GroupBox g = sender as GroupBox;
            var a = from RadioButton r in g.Controls where r.Checked == true select r.Name;
            strchecked = a.First();
         }
    
    0 讨论(0)
  • 2020-12-09 17:30
    groupbox1.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked).Name
    

    this will get the name of checked radio button. If you want to use it later, you might store name of that by storing into variable.

    Cheers

    0 讨论(0)
  • 2020-12-09 17:39

    You should take some look at the CheckedChanged event to register the corresponding event handler and store the Checked radio button state in some variable. However, I would like to use LINQ here just because you have just some RadioButtons which makes the cost of looping acceptable:

    var checkedRadio = new []{groupBox1, groupBox2}
                       .SelectMany(g=>g.Controls.OfType<RadioButton>()
                                                .Where(r=>r.Checked))
    // Print name
    foreach(var c in checkedRadio)
       System.Diagnostics.Debug.Print(c.Name);
    
    0 讨论(0)
  • 2020-12-09 17:45

    In my opinion, it's better if you use RadioGroup instead of GroupBox. If you use radioGroup, you can always find the selected item easily like this:

    radioGroup.selectedIndex;
    

    If you design using Windows Forms, I suggest to implement RadioGroup behavior like this (please note that my code is in Java):

    for (Component comp:groupBox1.components) {
        if (((RadioButton)comp).selected)
            return ((RadioButton)comp).value;
    }
    

    You can put this code block in a method to return selected radioButton value, and then you can use this value in your SWITCH part.

    0 讨论(0)
提交回复
热议问题