web-dev-qa-db-fra.com

Comment puis-je savoir quel bouton radio est coché dans une zone de groupe?

J'ai ces groupbox:

Enter image description here

Je veux exécuter du code selon l'état vérifié d'un bouton radio comme:

string chk = radiobutton.nme; // Name of radio button whose checked is true
switch(chk)
{
    case "Option1":
        // Some code
        break;

    case "Option2":
        // Some code
        break;

    case "Option3":
        // Some code
        break;
}

Existe-t-il un moyen direct de ne recevoir que le nom du bouton radio coché?

14
Co. Aden

Vous pouvez trouver tous les boutons radio cochés comme

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

Jetez également un coup d'œil à CheckedChanged event.

Se produit lorsque la valeur de la propriété Checked est modifiée.

32
Soner Gönül

Vous devriez jeter un coup d'œil à l'événement CheckedChanged pour enregistrer le gestionnaire d'événements correspondant et stocker l'état du bouton radio Checked dans une variable. Cependant, je voudrais utiliser LINQ ici simplement parce que vous n’avez que quelques RadioButtons qui rendent le coût du bouclage 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);
4
King King

Plutôt que de vérifier tous les boutons radio, utilisez l'événement Validated de la 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
Bede Amarasekara