2009-07-27 4 views
0

J'utilise C# dans VS2005. Pour mon application, j'ai besoin de créer quatre boutons radio. Ma forme ressemble:Bouton DynamicRadio

A(Radio Button) 
B(Radio Button) 
C(Radio Button) 
D(Radio Button) 

Submit (Button) 

Lorsqu'un utilisateur clique sur le bouton Envoyer je dois savoir sur quel bouton la radio est cochée. Comment puis-je déterminer cela?

+0

ajouté étiquette de formulaires de Windows; J'ai répondu avec le code pour le Web, mais ensuite réalisé la question dit windows. –

Répondre

1

Je voudrais ajouter tous les boutons radio à un List<RadioButton> qui vous aiderait à innombrer à travers eux lorsque le soumettre est vérifié pour savoir lequel est coché.

1

Vous pouvez utiliser la Checked propriété d'un RadioButton pour voir si elle est cochée:

bool isChecked = radA.Checked; 

J'utilise souvent la fonction d'aide suivante pour obtenir exactement le RadioButton qui est vérifié:

public RadioButton GetCheckedRadioButton(Control container) 
{ 
    if (container == null) { 
     return null; 
    } 
    else if (container is RadioButton) { 
     return GetCheckedRadioButton(container.Parent); 
    } 
    else { 
     foreach (Control childControl in container.Controls) { 
      if (childControl is RadioButton) { 
       RadioButton radioBtn = (RadioButton) childControl; 

       if (radioBtn.Checked) { 
        return radioBtn; 
       } 
      } 
     } 

     return null; 
    } 
} 

Ensuite, vous pouvez simplement appeler cette fonction en utilisant l'un de vos contrôles ou son conteneur, et faire une instruction switch, en tant que telle:

switch(GetCheckedRadioButton(radA)) { 
    case radA: 
     // radA is checked 
     break; 
    case radB: 
     // radB is checked 
     break; 
} 

Personnellement, je trouve moins bavard que l'habituel:

if(radA.Checked) { 
    //radA is checked 
} 
else if(radB.Checked) { 
    //radB is checked 
} 
0

Si vous êtes sûr que vous aurez seulement besoin 4 RadioButtons, alors que je venais d'écrire un code similaire à ce sujet.

if (Radio1.Checked) ... 
if (Radio2.Checked) ... 
if (Radio3.Checked) ... 
... 

Si vous savez que seul d'entre eux peut être vérifié en même temps (à l'aide d'une boîte de groupe ou un autre mécanisme), vous pouvez optimiser cela en utilisant « else if » au lieu.

Cependant, s'il y a une possibilité que vous en ayez besoin, cela peut être un gaspillage, donc je suis d'accord avec les autres réponses, vous devriez les mettre dans une collection de votre choix et les utiliser pour les parcourir sont vérifiés.