Switch case imbriqués

Résolu
cs_bigger Messages postés 5 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 20 juin 2009 - 1 avril 2009 à 09:10
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.
A voir également:

2 réponses

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
1 avril 2009 à 10:12
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;
    }
}
3
GillouXman Messages postés 561 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 10 juin 2010
1 avril 2009 à 09:43
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
")  

...
0
Rejoignez-nous