| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 
 |       private void BtnRechercher_Click(object sender, System.EventArgs e)
      {
         // Si pas de critère.
         if(TextBoxMasque.Text.Length == 0)
         {
            MessageBox.Show(this, "Attention :  il faut saisir un critère de recherche !", this.Text + " - message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            TextBoxMasque.Focus();
            return;
         }
 
         // Si pas de répertoire.
         if(TextBoxRepertoire.Text.Length == 0)
         {
            MessageBox.Show(this, "Attention :  il faut sélectionner un répertoire de recherche !", this.Text + " - message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            TextBoxRepertoire.Focus();
            return;
         }
 
         BtnRechercher.Enabled = false;
         BtnAnnulerRecherche.Enabled = true;
         TextBoxMasque.Text = TextBoxMasque.Text.Trim();
         ListView.Clear();        // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
         _nNbFichier = 0;     _bRechercheAnnulee = false;
         StatusBarPanelNb.Text = "";
         StatusBarPanelTexte.Text = " Recherche en cours ...";
         try
         {
            // Recherche.
            _ThreadRecherche = new Thread(new ThreadStart(InitRecherche));
            _ThreadRecherche.Start();
         }
         finally
         {
            BtnRechercher.Enabled = true;
            BtnAnnulerRecherche.Enabled = false; 
            StatusBarPanelNb.Text = _nNbFichier.ToString();
            StatusBarPanelTexte.Text = (_bRechercheAnnulee ? " Recherche annulée." : " Recherche terminée.");
            ListView.Focus();
         }
      }
 
      private void InitRecherche()
      {
         // Recherche.
         _bRechercheEnCours = true;
         Recherche(TextBoxMasque.Text, TextBoxRepertoire.Text, TextBoxContenant.Text, CheckBoxSousRepertoires.Checked);
      }
 
      private void Recherche(string szMasque, string szRepertoire, string szValeur, bool bRechercheSousRepertoire)
      {
         // Initialisations.
         Regex Delimiteur = new Regex(",");
         String[] TypesFichiers = Delimiteur.Split(szMasque);
         if(TypesFichiers.Length == 0)
         {
            TypesFichiers = new String[1];
            TypesFichiers[0] = "";
         }
         for(int i = 0; i < TypesFichiers.Length; i++)
         {
            TypesFichiers[i] = TypesFichiers[i].Trim();
         }
 
         // Recherche.
         try
         {
            foreach(string szTypeFichier in TypesFichiers)
            {
               foreach(string szFichier in Directory.GetFiles(szRepertoire, szTypeFichier))
               {
                  // Si recherche dans fichier.
                  if((szValeur != "") && (!ValeurDansFichier(szFichier, szValeur)))
                     continue;
                  else
                  {
                     // Ajout élément.
                     ListViewItem Element = new ListViewItem(szFichier);
                     Element.SubItems.Add(szRepertoire);
                     Element.SubItems.Add("?");
                     ListView.Items.Add(Element);
                     _nNbFichier++;
                     StatusBarPanelNb.Text = _nNbFichier.ToString();
                  }
               }
            }
         }
         catch(Exception)
         {
         }
 
         // Recherche dans les sous-répertoires.
         if(bRechercheSousRepertoire)
         {
            // Parcours des sous-répertoires.
            try
            {
               foreach(string szSousRepertoire in Directory.GetDirectories(szRepertoire))
               {
                  // Recherche dans le sous-répertoire.
                  Recherche(szMasque, szSousRepertoire + "\\", szValeur, bRechercheSousRepertoire);
               }
            }
            catch(Exception)
            {
            }
         }
      } |