2017-06-29 1 views
0

actuellement je développe le système de chargement d'image en utilisant C# (formulaire windows). J'ai un problème sur la façon d'activer/désactiver le bouton de recherche si la valeur entrée dans la zone de texte existe ou n'existe pas dans le dossier. Je veux que le bouton de recherche ne puisse pas être cliqué si la valeur dans la zone de texte n'existe pas dans le dossier et le bouton de recherche peut être cliqué si la valeur dans la zone de texte existe. Le problème est la recherche de bouton ne peut pas être cliqué, même si la valeur que j'ai entré existe dans un dossier. S'il vous plaît, quelqu'un m'aide. Voici mon code:Comment vérifier si une valeur dans une zone de texte existe dans un dossier

private void textBoxEmpNo_TextChanged(object sender, EventArgs e) 
{ 

     string baseFolder = @"\\\\egmnas01\\hr\\photo"; 

     string checkEmpNo = "*" + textBoxEmpNo.Text + "*.jpg"; 

     bool fileFound = false; 

     DirectoryInfo di = new DirectoryInfo(baseFolder); 


     foreach (var folderName in baseFolder) 
     { 
      var path = Path.Combine(baseFolder, checkEmpNo); 

      if (File.Exists(checkEmpNo)) 
      { 
      buttonSearch.Enabled = true; 

      fileFound = true; 
      break; 
      //If you want to stop looking, break; here 
      } 
     } 
     if (!fileFound) 
     { 
      //Display message that No such image found 
      buttonSearch.Enabled = false; 
     } 
    } 
+0

Je trouve cette exigence peu étrange. –

+0

@SushilMate quel étrange? Je veux que le bouton de recherche ne puisse pas être cliqué si la valeur dans la zone de texte n'existe pas dans le dossier et le bouton de recherche peut être cliqué si la valeur dans la zone de texte existe dans le dossier. – Miza

+0

alors quel est l'utilisation du bouton de recherche? vous autorisez quelque chose à chercher qui est déjà dans le dossier, à mon humble avis vous ne devez pas activer/désactiver le bouton, laissez l'utilisateur clique dessus et savoir s'il est là ou non. –

Répondre

2

essayez d'utiliser ce qui suit.

//Search for the filename that you have entered in textBoxempNo. 

string[] fileFound = Directory.GetFiles(baseFolder, "*" + textBoxEmpNo.Text 
+ "*.jpeg", SearchOption.AllDirectories) 

//Then check if there are files found. 

`if (fileFound.Length ==0) 
{ 
    buttonSearch.Enabled = false; 
} 
else 
{ 
    buttonSearch.Enabled = true; 
}` 
+0

ne fonctionne toujours pas.peut vous éditer dans mon code? peut-être que je code faussement :( – Miza

0
private void textBoxEmpNo_TextChanged(object sender, EventArgs e) 
     { 
      bool fileFound = false; 
      const string baseFolder = @"\\\\egmnas01\\hr\\photo"; 

      string[] matchedFiles = Directory.GetFiles(baseFolder, "*" + textBoxEmpNo.Text + "*.jpeg", SearchOption.AllDirectories); 

      if (matchedFiles.Length == 0) 
      { 
       buttonSearch.Enabled = false; 
      } 
      else 
      { 
       buttonSearch.Enabled = true; 
       fileFound = true; 
      } 
     } 

Aborder suggestion Adriano Repetti.

private void textBoxEmpNo_TextChanged(object sender, EventArgs e) 
     { 
      bool fileFound = false; 
      const string baseFolder = @"C:\Users\matesush\Pictures"; 

      if (Directory.EnumerateFiles(baseFolder, "*" + textBoxEmpNo.Text + "*.jpeg", SearchOption.AllDirectories).Any()) 
      { 
       buttonSearch.Enabled = true; 
       fileFound = true; 
      } 
      else 
      { 
       buttonSearch.Enabled = false; 
      } 
     } 
+0

Merci pour votre réponse.Il fonctionne, mais pourquoi il charge très lent? – Miza

+0

Je suppose que vous accédez à un emplacement distant et le nombre de fichiers serait énorme, ce qui peut prendre du temps pour rechercher –

+0

si le répertoire photo ne contient que des fichiers En vous pouvez utiliser file.exists qui peut être plus rapide que la solution ci-dessus. –