2017-05-30 4 views
0

Je suis un débutant en langage de programmation C#. Quelqu'un peut-il m'aider sur la façon de récupérer l'image de plusieurs dossiers quelle image à dossier> dossier> dossier> image. Ci-dessous est le code que j'essaie déjà mais il récupère seulement l'image si dossier> image. J'ai essayé comme celui-ci string baseFolder = @"\\\\egmnas01\\hr\\photo\\~"; mais ne fonctionne toujours pas. S'il te plaît, aide-moi quelqu'un. Merci.Comment récupérer l'image si les dossiers ne partagent pas le même dossier de base

string baseFolder = @"\\\\egmnas01\\hr\\photo\\"; 
    string[] employeeFolders = Directory.GetDirectories(baseFolder); 

    string imgName = textBoxEmplNo.Text + ".jpg"; 
    bool fileFound = false; 

    foreach (var folderName in employeeFolders) 
    { 
    var path = Path.Combine(folderName, imgName); 
     if (File.Exists(path)) 
    { 
     pictureBox1.Visible = true; 
     pictureBox1.Image = Image.FromFile(path); 
     fileFound = true; 

    } 

    } 
     if (!fileFound) 
    { 

     pictureBox1.Visible = true; 
     pictureBox1.Image = Image.FromFile(@"C:\Users\jun\Desktop\images\photo\No-image-found.jpg"); 
    } 
+0

Êtes-vous des hommes que vous voulez trouver un fichier dont le nom correspond au nom de fichier que vous fournissez dans cette arborescence de sous-répertoires? Vous pourriez vouloir quelque chose comme ceci pour trouver le (s) fichier (s) correspondant (s) si vous ne connaissez pas le sous-répertoire: 'System.IO.Directory.GetFiles (@" c: \ test \ "," \\ *. Jpg ", System .IO.SearchOption.AllDirectories); ' – john

+0

@john ce code remplace ce code' string baseFolder = @ "\\\\ egmnas01 \\ hr \\ photo \\"; '? parce que j'essaie déjà mais ne fonctionne toujours pas. – Miza

Répondre

1

Je crois suivante devrait vous aider à

static void Main(string[] args) 
{ 
    // test path... replace with the path you need 
    string baseFolder = @"D:\test\"; 

    string imgName = textBoxEmplNo.Text + ".jpg"; 
    bool fileFound = false; 

    DirectoryInfo di = new DirectoryInfo(baseFolder); 
    foreach (var file in di.GetFiles(imgName, SearchOption.AllDirectories)) 
    { 
     pictureBox1.Visible = true; 
     pictureBox1.Image = Image.FromFile(file.FullName); 

     fileFound = true; 
     break; 
    } 

    if (!fileFound) 
    { 

     pictureBox1.Visible = true; 
     pictureBox1.Image = Image.FromFile(@"C:\Users\jun\Desktop\images\photo\No-image-found.jpg"); 
    } 
} 

S'il vous plaît noter qu'il sont similaires questions déjà demandé (et répondu) dans ce forum, peut-être, pour un autre fichier (XML au lieu de jpg) aussi , s'il vous plaît se référer à MSDN lorsque vous commencez à utiliser les API .Net pour la première fois ou lorsque vous êtes confus.

+0

merci pour votre aide. mais ne peut toujours pas récupérer l'image. :( – Miza

+0

@Miza Est-ce qu'il y a un fichier avec le nom correspondant mais toujours la logique ci-dessus ne trouve pas? S'il vous plaît imprimer tous les noms de fichiers récupérés par 'di.GetFiles (...)' à une console/message. Voyez-vous si c'est au moins une liste de certains fichiers si l'appel 'di.GetFiles (" *. Jpg ", SearchOption.AllDriectories)' est fait.Vous pouvez essayer d'écrire un exemple similaire avec une structure de dossiers imbriquée similaire et voir où échoue, si elle échoue – Shankar

+0

il est nécessaire 'static void Main (chaîne [] args)'? parce que je suis code dans 'private void textBoxWorkNo_KeyUp (expéditeur d'objet, KeyEventArgs e)'. – Miza