OpenFileDialog: Eigenartiges Verhalten oder nur null Durchblick!



  • Hallo!

    Wenn man man mit OpenFileDialog eine Datei lädt, dann ändert sich mit das CurrentDirectory auf dessen Pfad. Das ist insbesonders dann lästig.

    Hat jemand eine Idee, wie man das abschalten kann oder gibts bei diesem Verhalten irgendwelchen Nutzen, den ich nur bislange noch nicht erkannt habe.

    private void Test1_Click(object sender, EventArgs e)
            {
                OpenFileDialog dlg = new OpenFileDialog();
                dlg.ShowDialog();
                MessageBox.Show(Directory.GetCurrentDirectory()); // häää?
            }
    
            private void Test2_Click(object sender, EventArgs e)
            {
                MessageBox.Show(Directory.GetCurrentDirectory()); // wie erwartet!
            }
    

    Obiges Codestück zeigt die Sache in medias res ...



  • ChrisPlusPlus schrieb:

    Hallo!

    Wenn man man mit OpenFileDialog eine Datei lädt, dann ändert sich mit das CurrentDirectory auf dessen Pfad. Das ist insbesonders dann lästig.

    Hat jemand eine Idee, wie man das abschalten kann oder gibts bei diesem Verhalten irgendwelchen Nutzen, den ich nur bislange noch nicht erkannt habe.
    ...

    Hi also erstens, was heißt "Das ist insbesonders dann lästig" mach den Satz mal fertig.

    Current Directory muss natürlich auf den Pfad geändert werden den du auswählst, drum heißt es ja so. in deinem Code sagt mir das Hä nichts! Was ist da Hä der Nutzen ist seht vielfältig!
    Stell doch bitte deine Frage etwas genauer oder schau mal in der MSDN!



  • Ja, dann laß den Code halt mal ablaufen, dann siehst schon was Sache ist!

    Hi also erstens, was heißt "Das ist insbesonders dann lästig" mach den Satz mal fertig.

    Kann es sein, daß Du ein manisches Mitteilungsbedürfnis hast? Ja so ein Korinthenkacker ... man faßt es nicht!

    Hat jemand eine Idee, wie man das abschalten kann oder gibts bei diesem Verhalten irgendwelchen Nutzen, den ich nur bislange noch nicht erkannt habe.

    Du wirst Dir eben standardmäßige WorkingDirectory sichern müssen (member). Ich finde es auch eigenartig, daß beim FileOpenDialog ein solches Verhalten an den Tag gelegt wird, bei FolderBrowserDialog wäre es ja noch verständlich!



  • Danke Frank für die Bestätigung, dass Unregs hier nur Lesezugriff bekommen sollten! 👎

    Sichern muss man sich gar nichts! Current Directory gibt einfach nur an welcher Pfad grad geöffnet wird, so kann man das nächste mal gleich diesen Pfad öffnen und der User muss beim mehrmaligen öffnen oder beim öffnen verschiedener Dateien nacheinander nicht jedes mal zu diesem Pfad navigieren!



  • Nun, so möchte ich eine Konfigurationsdatei relativ zu dem Verzeichnis abspeichern, wo meine Applikation läuft.

    Nun, jedesmal wenn ich den FileOpenDialog öffne, weiß ich nicht mehr, wo mein dieses Verzeichnis ist ... kann man mein beschriebenes Verzeichnis irgendwie ermitteln?



  • hi ChrisPlusPlus,

    ich weiß nicht ob ich dir wirklich VIEL weiter helfen kann bzw. ob ich deine frage richtig interpretiert habe, da ich selber noch ein cpp bzw. c# newbie bin 😉

    Aber ich versuchs mal!

    SaveFileDialog dlgSave = new SaveFileDialog();
    
    dlgOpen.RestoreDirectory = true;
    //ist standard mäßig auf false wenn man das auf true setzt springt er nach dem speichern/laden wieder ins ausgangsverzeichniss
    //bzw. InitialDirectory wenn du FileDialog nicht lokal sondern global deklariert hast.
    
    dlgOpen.InitialDirectory = "c:\\";
    //InitialDirectory ist der Startpunkt des FileDialogs,
    //diesen könntest du auch standard mäßig immer setzen.
    
    string directory1 = Directory.GetCurrentDirectory(); //aktuelles Arbeitsverzeichniss der Anwendung.
    
    string directory2 = Application.StartupPath //Verzeichniss wo die .exe liegt.
    

    hoffe ich konnte dir helfen.

    mfg n00by



  • ChrisPlusPlus schrieb:

    Nun, so möchte ich eine Konfigurationsdatei relativ zu dem Verzeichnis abspeichern, wo meine Applikation läuft.

    Nun, jedesmal wenn ich den FileOpenDialog öffne, weiß ich nicht mehr, wo mein dieses Verzeichnis ist ... kann man mein beschriebenes Verzeichnis irgendwie ermitteln?

    Meinst Du sowas ?
    Application.StartupPath - Reiner Pfad deiner Anwendung ohne Dateinamen
    Application.ExecutablePath - Pfad deiner Anwendung mit Dateinamen



  • 👍 👍 👍 Jawoll, das war es! 👍 👍 👍

    Vielen Dank Geeky!


Log in to reply