2017-05-30 2 views
0

Ich bin ein Neuling in C# -Programmiersprache. Kann mir jemand helfen, wie man ein Bild aus mehreren Ordnern abruft, welches Bild unter Ordner> Ordner> Ordner> Bild. Unten ist Code, den ich bereits versuche, aber es nur Bild abrufen, wenn Ordner> Bild. Ich habe versucht, wie dieser string baseFolder = @"\\\\egmnas01\\hr\\photo\\~"; aber immer noch nicht funktioniert. Bitte, jemand hilft mir. Vielen Dank.Wie Bild abrufen, wenn Ordner den gleichen Basisordner nicht teilen

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

Möchten Sie eine Datei finden, deren Name mit dem Dateinamen übereinstimmt, den Sie in diesem Verzeichnis der Unterverzeichnisse angeben? Sie möchten vielleicht die folgende (n) Datei (en) finden, wenn Sie das Unterverzeichnis nicht kennen: 'System.IO.Directory.GetFiles (@" c: \ test \ "," \\ *. Jpg ", System .IO.SearchOption.AllDirectories); ' – john

+0

@john, dass der Code diesen Code ersetzt 'string baseFolder = @" \\\\ egmnas01 \\ hr \\ photo \\ ";'? weil ich es schon versuche aber immer noch nicht arbeite. – Miza

Antwort

1

Ich glaube folgenden sollen Ihnen helfen,

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"); 
    } 
} 

Bitte beachten Sie, es sind ähnliche questions schon gefragt (und beantwortet) in diesem Forum, vielleicht für eine andere Datei (xml statt jpg) Auch Bitte beachten Sie MSDN, wenn Sie die .Net-APIs zum ersten Mal verwenden oder wenn Sie verwirrt sind.

+0

danke für deine Hilfe. aber immer noch kann das Bild nicht abgerufen werden. :( – Miza

+0

@Miza Ist es, dass es eine Datei mit übereinstimmendem Namen gibt, aber die oben genannte Logik es nicht findet? Bitte drucken Sie alle Dateinamen, die von 'di.GetFiles (...)' abgerufen werden, auf eine Konsole/ein Meldungsfeld aus. Sehen Sie, ob es zumindest einige der Dateien auflistet, wenn 'di.GetFiles (" *. Jpg ", SearchOption.AllDriectories) aufgerufen wird. Sie können versuchen, ein ähnliches Beispiel mit ähnlicher geschachtelter Ordnerstruktur zu schreiben und zu sehen, wo es liegt schlägt fehl, wenn es fehlschlägt – Shankar

+0

es ist notwendig 'static void Main (string [] args)' ?, weil ich Code bin 'private void textBoxWorkNo_KeyUp (Objekt Absender, KeyEventArgs e)'. – Miza

Verwandte Themen