Switch case imbriqués [Résolu]

Messages postés
5
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
20 juin 2009
- - Dernière réponse : ed73
Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
- 1 avril 2009 à 10:12
Bonjour à tous,

J'ai une forme avec plusieurs Groupbox contenant chacuns plusieurs boutons. Lorsque j'appui sur un bouton, je récupère le Tag du groupbox et du bouton lui-même pour traiter ensuite l'évènement dans un timer. Et c'est dans cette routine que j'ai un problème de switch-case imbriqué:
switch (TagGpb)
            {
                case 1: switch (TagButton)
                    {
                        case 1: ...; break;
                        case 2: ...;break;
                        case 3: break;
                        case 4: break;
                        case 5: break;
                        case 6: break;
                        case 7: break;
                        case 8: break;
                        case 9: break;
                        case 10: break;
                        case 11: break;
                        case 12: break;
                        case 13: break;
                        case 14: break;
                        case 15: break;
                        case 16: break;
                        case 17: break;
                        case 18: break;
                        case 19: break;
                        case 20: break;
                        case 21: break;
                        case 22: break;
                        case 23: break;
                        case 24: break;
                        default: break;
                    }
                   
                case 2: switch (TagButton)
                    {
                        case 1: break;
                        case 2: break;
                        case 3: break;
                        case 4: break;
                        case 5: break;
                        case 6: break;
                        case 7: break;
                        case 8: break;
                        case 9: break;
                        case 10: break;
                        case 11: break;
                        case 12: break;
                        default: break;
                    }.....

Le compilateur génère cette erreur:  "erreur CS0163: Le contrôle ne peut pas passer d'une étiquette case ('case 1:') à une autre"

Est-ce que ce type d'erreur est déjà arrivé à qqun et si c'est le cas comment pourrais-je la contourner?

Merci.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
1
3
Merci
Ce que tu écris n'est pas correct, ça c'est mieux si tu tiens absolument à imbriquer les switch

switch(TagGpb)
{
   case 1:
   {
      switch(TagButton)
      {
         case 1:...;break;
         case 2:...;break;
      }
      break;
   }
   case 2:
    {
      switch(TagButton)
      {
         case 1:...;break;
         case 2:...;break;
      }
      break;
    }
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 129 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ed73
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010
0
Merci
sincérement je pense que ce serait plus propre et plus lisible d'appeler une méthode dans chaque case du prermier niveau

switch (TagGpb)
            {
                case 1: "yourStuff"
                    {
                        yourMethodforYourStuff()           
                        default: break;
                    }
                   
                case 2: "someOtherStuff"
                    {
                     
yourMethodforsomeOtherStuff
()   

                        default: break;
                    }.....

ou même

switch (TagGpb)
            {
                case 1: "yourStuff"
                    {
                        yourMethod("yourStuff")           
                        default: break;
                    }
                   
                case 2: "someOtherStuff"
                    {
                     
yourMethod("
someOtherStuff
")  

...
Commenter la réponse de GillouXman