UserControl und Datei im Konstruktor laden

09/12/2008 - 19:35 von Daniel Zuidinga | Report spam
Hallo NG,

ich lade eine (CSV-) Datei in dem Konstruktor meines UserControls. Wenn
ich nun das UserControl auf der Form platzieren will, meckert VS, dass
die Datei nicht existiert. Dabei hab ich eigentlich den (relativen)
richtigen Pfad angegeben. Weiss jemand, wodran das liegen kann?
Ich möchte nicht extra jedes mal ne Load-Funktion programmieren und in
meinem Hauptprogramm beim starten aufrufen.

Gruß
Daniel
 

Lesen sie die antworten

#1 Frank Dzaebel
09/12/2008 - 20:51 | Warnen spam
Hallo Daniel,

ich lade eine (CSV-) Datei in dem Konstruktor meines UserControls.
Wenn ich nun das UserControl auf der Form platzieren will, meckert
VS, dass die Datei nicht existiert. Dabei hab ich eigentlich den
(relativen) richtigen Pfad angegeben. Weiss jemand, wodran das liegen
kann?



Benötigst Du denn die Datei im DesignMode also
zur Entwurfszeit? Beachte, dass zur Entwurfszeit eine
Assembly làuft, deren aktuelles Verzeichnis wohl
ganz woanders ist, als Du vielleicht vermutest:

private void UserControl1_Load(object sender, EventArgs e)
{
MessageBox.Show("DesignMode:" + DesignMode);
MessageBox.Show("CurrentDirectory:"+Directory.GetCurrentDirectory());
MessageBox.Show("StartupPath:" + Application.StartupPath);
MessageBox.Show("ExecutingAssembly"+
Assembly.GetExecutingAssembly().Location);
}

Dein "(relativer) richtiger Pfad" ist eher normal nicht
empfehlenswert. Du solltest nicht davon ausgehen,
dass sich Deine Applikation in irgendeiner
CurrentDirectory befindet. Eine Applikation könnte
zum Beispiel über Link in einem anderen
WorkingDirectory aufgerufen werden. Zur Laufzeit
ist aber:
Path.Combine(Application.StartupPath, "Relativ.csv")
durchaus normal ok.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen