Reihenfolge von openFileDilaog in listBox



  • Hallo Zusammen,
    vorab: ich arbeite mit C++/CLI seit Mitte 2008, daher nehmt mir gewisse Defizite nicht allzu übel 🙂

    Problem:
    Ich möchte mit Hilfe von openFileDialog eine Multiauswahl ermöglichen. Die markierten Dateien sollen in GENAU der Reihenfolge in eine listBox gepackt werden, in der ich sie auch über openFileDialog auswähle.

    Bsp:
    Ich markiere im openFileDialog Bild 3, Bild 9 und Bild 1.
    Bereits im Feld "Dateiname:" sortiert er mir Bild 1 (zu letzt ausgewählt) an erster Stelle.
    Übergebe ich nun die Auswahl an die Listbox steht Bild 1 an erster Stelle, obwohl ich Bild 3 eigentlich zu erst ausgewählt habe.

    Nun bestehe ich aber darauf, dass das zu erst ausgewählte Bild auch als erstes in die Listbox kommt 😉

    What should I do?

    Hier der Code vom openFileDialog:

    private: System::Void openFileDialog_FileOK(System::Object^ sender, Sysstem::ComponentModel::CancelEventArgs^ e) {
        //FileNames in Array ablegen
        array <String^> ^files=openFileDialog2->FileNames;
        //in listBox schreiben
        for each (String ^datei in files){
            listBox->Items->Add(datei);
            }
    }
    

    Danke im Voraus!



  • Tja, offensichtlich beherrscht die Komponente das nicht. Da aber sowieso die hohe Wahrscheinlichkeit besteht, das jemand die Dateien in der falschen Reihenfolge auswählt, wäre es doch besser ein Up- und Own-Button neben der Listbox zu packen mit denen der Benutzer nachträglich die Reihenfolge der Dateien ändern kann. Oder Drag'n'Drop.



  • Danke für die Antwort...
    Aber von Drag 'n Drop in C++ bin ich noch so weit entfernt, wie Polen von Ägypten! 🤡
    Ich habe mal ein bissal rumprobiert und folgendes zur "Symptombehandlung" geschrieben:

    //Array Gesamtlänge auslesen
    Int32 arraylaenge = files->Length;
    
    // letze Array Position
    Int32 i = arraylaenge-1;
    while (i>=0){
        listBox1->Items->Add(files[i]);
        i = i-1;
    }
    

    Ich hoffe es ist nachvollziehbar...
    Danke!



  • Hast du eine Lösung gefunden?? Habe nämlich genau das gleiche Problem 😉

    Gruß
    physici



  • Hi,
    ja.. die Lösung steht einen über Deinem Eintrag!
    Der Code plus dem Ausgangscode (Eintrag 1) sollte die Lösung geben...

    Wenn Du dennoch nicht weiterkommst... schreiben 🙂



  • ;-), soweit ich rausbekommen habe, kann es der OpenFileDialog wirklich nicht, sondern er gibt die Daten irgendwie random aus. Ich schick die Daten bei mir also noch fix zum Sortieren. Hast du mal probiert, ob es immer so ist, dass die zuletzt gewählte Datei als erstes aufgelistet wird?



  • Jo... wenn Du die Eigenschaft Sort der listBox auf true setzt, hast Du auch eine alphabetische Sortierung... aber dann leider immer noch nicht so wie eigentlich gewünscht 🙂 Das erreicht man glaub ich nur auf dem Wege (wie oben), dass man über ein Array das letzte als erstes ausgibt.

    Also die male wo ich es getestet habe, hat er immer die zu letzt gewählte Datei als erstes ausgegeben...



  • Ich hab rausbekommen das das auch ein wenig Plattformbedingt ist. Bei mir zum beispiel war es, das das letzte ausgewählte element als erstes stand und der rest dann der Reihenfolge nach. Nach installation des SP2 war dann die die Reihenfolge rückwärts. Man kann das nie genau sagen...



  • alles was seltsam...
    Ich glaub aber auch das die Klasse von SP zu SP unterschiedlich reagiert.
    Naja sei's drum...


Anmelden zum Antworten