2012-06-04 4 views
0

J'ai trois boutons radio. S'il vous plaît voir l'image.Converti radiobutton à un caractère

radio buttons

Je définir une variable

char temp; 

Ce que je veux est

Si "Homme" est sélectionné,

temp = "M"; 

Si "Femme" est sélectionné,

temp = "F"; 

Si "deux" est sélectionné puis

temp = "B". 

Mon code inachevé:

temp = Convert.ToChar(this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked)); 

Merci pour les conseils.

EDIT: Les contrôles sont dans une zone de groupe. En mode débogage. J'ai une erreur

?groupBox4.Controls.OfType() {System.Linq.Enumerable.OfTypeIterator} source: null And ?groupBox4.Controls.OfType().FirstOrDefault(r=>r.Checked).Text Expression cannot contain lambda expressions

EDIT 2: Voir l'image. Exécutez le code obtenir l'exception. error

+1

'this.Controls.OfType () .FirstOrDefault (r => r.Checked) .Text [0]' – Damith

+0

@Love - Quand vous dites « Dans le mode de débogage "Voulez-vous dire l'une des fenêtres de débogage (immédiate ?, sortie?) ou avez-vous juste obtenu une exception? Voir si cela [résout votre problème] (http://osmirnov.net/posts/expression-cannot-contain-lambda-expressions/) – Blachshma

+0

Il est dans la fenêtre immédiate. –

Répondre

3

Si je comprends bien, cela est basé sur votre (pas si recommandé) hypothèse que Nom commence chaque RadioButton avec une lettre différente.

temp = Convert.ToChar(this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked).Name.Substring(0, 1)); 

Edit: hypothèse même, mais sur la base du texte propriété au lieu de la Nom propriété

temp = Convert.ToChar(this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked).Text.Substring(0, 1)); 

Edit2: (Basé sur OPs Edition - Vérification que Vérifié RadioButton existe):

RadioButton rb = this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked); 

if (rb != null) 
{ 
    temp= rb.Text[0]; 
} 
+1

Vous pouvez également définir la propriété 'Tag' et la récupérer. – CodeCaster

+0

Il s'agit d'une application de formulaire Windows. Il n'y a pas de ClientID. Pardon. –

+0

@Love alors vous pouvez utiliser Name au lieu de ClientId ... (Mise à jour du code). L'option Texte fonctionnera dans les deux projets. Comme je l'ai dit, je ne suis toujours pas sûr si c'est exactement ce dont vous avez besoin ... – Blachshma

0

Il devrait être:

Controls.OfType<RadioButton>().Where(r => r.Checked).FirstOrDefault();