2010-12-06 1 views
1

Ich habe derzeit eine Winform mit einem Listbox-Steuerelement, mit dem ein Benutzer Verzeichnisse durchsuchen und sie der Listbox hinzufügen kann. Diese Verzeichnisspeicherorte werden dann mit der Datei mit den Anwendungseinstellungen gespeichert (als String?), Aber ich bin mir nicht sicher, wie ich die einzelnen Verzeichnisstrings trennen soll. Nach dem erneuten Laden des Formulars möchte ich, dass alle Verzeichnisse als einzelne Elemente aus der Einstellungsdatei in die Listbox geladen werden.C# - Mehrere Verzeichnisse in Einstellungen speichern und in Listbox laden

So habe ich technisch zwei Fragen:

  1. Was wäre der effizienteste Weg, um mehrere Stellen innerhalb der Anwendungseinstellungen Datei zu speichern?

  2. Wie würde ich gehen über das Laden der Verzeichnisse in die Listbox aus den Einstellungen? (Denken Sie daran, es gibt mehrere Verzeichnisse)

Meine Idee alle Verzeichnisse in einem String-Einstellung zu speichern war und trennen Sie sie durch ein Komma, aber ich bin nicht sicher, ob es eine effizientere Methode, dies zu tun.

Antwort

1

NEIN !!!! TU DAS NIEMALS!!!! Komma kann im Ordnernamen enthalten sein, und wenn Sie Komma als Trennzeichen verwenden, kann es viele kritische Probleme in Ihr Programm bringen.

Sie können Zeichen verwenden, die in Ordnernamen in Windows ungültig sind. \/: * ? " < > |

können Sie auch nicht \ und / weil vielleicht Pfad Shops als c:\\data\\ und unter Verwendung von ‚\‘ als Trenn schlecht ist, und vielleicht auch sie als c:/data/ so gespeichert sind / riskant. Ich denke, mit * oder | vielleicht eine gute Idee, sowohl weil sie illegal sind und sie können nirgendwo von einem Ordner Pfad und die Zeichenfolge, die einige Ordnerpfade verkettet hat, ist lesbar und kann einfach durch siehe * oder | als Trennzeichen erkannt werden.

Dabei ist s die Zeichenfolge der verketteten Ordnerpfade, die Sie aus der Einstellungsdatei gelesen haben. auch können Sie verwenden

 String[] paths = s.Split(new char[]{'*'}, StringSplitOptions.RemoveEmptyEntries); 
     listBox1.DataSource = paths; 
+0

ich nicht einmal daran denken hat, kann nicht glauben, dass nicht meinen Verstand überqueren. Vielen Dank. – user

+0

editiert.8moretogo –

0

Sie könnten das tun, und dann eine Zeichenfolge.Split für das Komma, und legen Sie die Quelle der Listbox auf das Ergebnis der Teilung.

string settings = GetFromConfig(); 
var items = settings.Split(','); 
listBox1.DataSource = items; 
+0

Siehe ‚keine Kommas‘, oben:) –

0

Sie können eine StringCollection in der Einstellungsdatei verwenden.

Einmal in einer Sammlung können Sie sie einfach in eine List<String> setzen und dann die Elemente über ListBox.Items Eigenschaft, insbesondere die Add Methode zurück.