1 2 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)
{
}
}
} |
Partager