break pour un foreach ?

break pour un foreach ? - C#/.NET managed - Programmation

Marsh Posté le 28-04-2006 à 17:09:32    

Bonjour j'ai un foreach
et dans mon forieach si il trouve son bonheure il selectionne un element
mon probleme cest qu'une fois qu'il a selectionner lelement je voudrai pas qu'il continu a chercher dans la liste.
 
j'ai tente de faire un break pour arreter le foreach mais sans succe

Reply

Marsh Posté le 28-04-2006 à 17:09:32   

Reply

Marsh Posté le 28-04-2006 à 17:26:17    

:??:
 
poste-voir ton code

Reply

Marsh Posté le 28-04-2006 à 17:31:03    

return


---------------
Töp of the plöp
Reply

Marsh Posté le 28-04-2006 à 17:55:14    

Code :
  1. /*** Methode lancer lors du changement de texte de la texte box recherche ***/
  2.  private void txt_recherche_TextChanged(object sender, System.EventArgs e)
  3.  {
  4.   /*** Verfie si le texte n'est pas dans un etat par defaut pour ne pas lancer la recherche pour rien ***/
  5.   if(this.txt_recherche.Text!="" && this.txt_recherche.Text!="Recherche" )
  6.   {
  7.    /*** Pour chaque noeud de larbre ***/
  8.    foreach(System.Windows.Forms.TreeNode t in this.treeView1.Nodes)
  9.     /*** Pour chaque sous noeud des noeuds principaux ***/
  10.     foreach(System.Windows.Forms.TreeNode n in t.Nodes)
  11.     {
  12.      /*** Verfie si le texte rechercher est dans un des sous noeuds ***/
  13.      /*** Gestion des mot clef : ***/
  14.      /*** recherche par batiment : bat ***/
  15.      if(this.txt_recherche.Text.StartsWith("bat:" ) && this.txt_recherche.Text.Length>4)
  16.      {
  17.       /*** Recherche par batiment ***/
  18.       if(((CIntervention)n.Tag).getlieu().getbatiment().IndexOf(this.txt_recherche.Text.Remove(0,this.txt_recherche.Text.IndexOf(":" )+1).ToUpper())>=0
  19.        || ((CIntervention)n.Tag).getlieu().getbatiment().IndexOf(this.txt_recherche.Text.Remove(0,this.txt_recherche.Text.IndexOf(":" )+1).ToLower())>=0)
  20.       {
  21.        this.treeView1.SelectedNode = n;
  22.       }
  23.      }
  24.      /*** Recherche par demandeur d'intervention : nom ***/
  25.      /*** par default sans mot clef : ident de lintervention ***/
  26.      if(this.txt_recherche.Text.StartsWith("nom:" ) && this.txt_recherche.Text.Length>4)
  27.      {
  28.       /*** Recherche par batiment ***/
  29.       if(((CIntervention)n.Tag).getuser().getname().IndexOf( this.txt_recherche.Text.Remove(0,this.txt_recherche.Text.IndexOf(":" )+1).ToUpper())>=0
  30.        || ((CIntervention)n.Tag).getuser().getname().IndexOf( this.txt_recherche.Text.Remove(0,this.txt_recherche.Text.IndexOf(":" )+1).ToLower())>=0)
  31.       {
  32.        this.treeView1.SelectedNode = n;
  33.       }
  34.      }
  35.      if(n.Text.IndexOf(this.txt_recherche.Text)>=0)
  36.      {
  37.       //this.treeView1.Focus();
  38.       this.treeView1.SelectedNode = n;
  39.      }
  40.     }
  41.   }
  42.  }

Reply

Marsh Posté le 28-04-2006 à 20:01:39    

C'est bien ce que j'imaginais.
 
Tu as deux for imbriqués.
Le break sort du premier, mais pas du second.
 
Ajoute une variable booléenne "found" que tu initialise à false.
Juste avant ton break, met la à true.
Juste après ton for de second niveau, ajoute "if (found) break;"

Reply

Marsh Posté le 29-04-2006 à 04:26:03    

ok pas bete jy avais pas penser :p
Je te remercie :D

Reply

Marsh Posté le 04-11-2010 à 03:32:00    

Utilise:
 
break 2;
 
même après 4 ans, ça peux servir à quelqu'un...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed