Visual C#: Problem mit System.IO.StreamReader

fastfred

Mitglied
Hallo Community,
ich habe ein Problem!
Ich möchte aus einer XML Datei mehrere Werte in in eine Drop&Down Liste lesen. Das funktioniert auch wunderbar.
Jetzt ist mir nur aufgefallen, wenn ich über den OpenFileDialog eine Grafik lade um den Hintergrund in einem Panel meiner Anwendung zu ändern und dann nochmal die XML Daten lade, bleibt das Programm hängen. Visual Studio zeigt mir dann, dass die XML-Datei nicht im Ordner vorliegt, welcher der Ordner der geladenen Grafik ist.

Hier ein Auszug des Codes für die XML Daten:
Code:
private void mannschaft_SelectedIndexChanged(object sender, EventArgs e)
        {
            mannschaft.Items.Clear();
            System.IO.StreamReader sr = new System.IO.StreamReader(@"XML/Mannschaften.xml");
            System.Xml.XmlTextReader xr = new System.Xml.XmlTextReader(sr);
            System.Xml.XmlDocument mannschaftenxml = new System.Xml.XmlDocument();
            mannschaftenxml.Load(xr);
            System.Xml.XmlNodeList mannschaftnameItems = mannschaftenxml.SelectNodes("Mannschaften/Mannschaft");

            for (int i = 0; i < mannschaftnameItems.Count; i++)
            {
                System.Xml.XmlNode Name = mannschaftnameItems.Item(i).SelectSingleNode("Name");
                mannschaft.Items.Add(Name.InnerText);

            }
        }
Ich denke mal, dass der Fehler daran liegt, dass der System.IO.StreamReader noch den Dateipfad vom OpenFileDialog mit drin hat. Kann man das irgendwie ändern?

Gruß

Fast Fred
 

MCoder

Erfahrenes Mitglied
Ich denke, du solltest dem StreamReader-Konstruktor besser einen kompletten absoluten Pfad übergeben. Damit gehst du solchen Problemen aus dem Weg.

Gruß
MCoder
 

fastfred

Mitglied
Hi MCoder!
Erstmal vielen Dank für deine Antwort.
Mit dem Gedanken habe ich auch schon gespielt...
Gibt es denn eine Möglichkeit(vllt. durch einen Befehl), den Ordner bzw.Pfad zu ermitteln, wo die Anwendung liegt, die man ausführt?

Gruß

Fast Fred
 

MCoder

Erfahrenes Mitglied
Den Pfad der Applikation bekommt man über die Assembly-Eigenschaften:
C++:
using System.Reflection;
using System.IO;

Assembly assembly = Assembly.GetEntryAssembly();
FileInfo fileinfo = new FileInfo(assembly.Location);
string strAppDir = fileinfo.DirectoryName;

Gruß
MCoder