Hallo Leute,
ich habe ein Problem beim Einbinden einer Grafik in meine Oberfläche. Beim Starten initialisiert sich die Oberfläche und die Grafik wird problemlos geladen. Diese Grafik soll jedoch mehrmals existieren, zwischen denen mittels einer ComboBox geschaltet wird. Mit dem "SelectedIndexChanged"-Ereignisses wird dann die Grafik neu geladen (es ist immer die selbe Grafikdatei, die geladen wird).
So sieht das Laden aus:
C#-Quelltext
1: 2: 3: 4:
| try { pbCoordinateSystemBox.Image = Image.FromFile("../../Resources/picture.jpg"); } |
Das funktioniert soweit problemlos.
Nun habe ich in meinem Programm auch die Möglichkeit eine XML-Datei einzulesen. Das tue ich wie folgt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| System.Windows.Forms.OpenFileDialog objDialogXML = new OpenFileDialog(); objDialogXML.Filter = "*.xml|*.xml"; DialogResult objResultXML = objDialogXML.ShowDialog(); if (objResultXML == DialogResult.OK) { MessageBox.Show("Funktioniert!"); objDialogXML.Reset(); } |
Wenn ich nach dem Einlesen einer XML-Datei wieder mittels der ComboBox wechsle, zeigt er mir eine FileNotFound-Exception, die jedoch keinen Aufschluss auf die Ursache gibt.
Ich habe selber herausgefunden, dass, wenn ich die picture.jpg in das Verzeichnis reinkopiere, aus dem ich auch die XML-Datei eingelesen hab, alles wieder problemlos funktioniert. Das heißt also, dass der "Marker" (ich nenne das jetzt mal so, um zu zeigen welches Verzeichnis für das Programm das gerade aktuelle ist) zum Startzeitpunkt sich erst im Debug-Verzeichnis befindet. Wenn ich dann aber die XML-Datei aus einem anderen Verzeichnis lade, dann zeigt der "Marker" auf dieses XML-Verzeichnis, weswegen beim Laden der picture.jpg natürlich der relative Pfad "../../Resources/" nicht mehr gültig ist.
Bis jetzt habe ich noch nicht geschafft herauszufinden wie man das aktuelle Verzeichnis wieder umändert. Ich freue mich über eure Antworten. Vielen Dank.