![](/img/trans.png)
[英]C# How do you save settings containing multiple objects and bind them to items in a listbox
[英]C# - Storing multiple directories in settings and loading them into listbox
我目前有一個帶有列表框控件的winform,該控件允許用戶瀏覽目錄並將其添加到列表框中。 然后將使用應用程序設置文件(作為字符串?)保存這些目錄位置,但是我不確定如何分隔每個目錄字符串。 重新加載表單后,我希望所有目錄都作為設置文件中的單個項加載到列表框中。
所以我從技術上有兩個問題:
在應用程序設置文件中保存多個位置的最有效方法是什么?
如何將目錄從設置加載到列表框中? (請記住,有多個目錄)
我的想法是將所有目錄存儲在一個字符串設置中,並用逗號分隔它們,但是我不確定是否有更有效的方法來執行此操作。
沒有!!!! 絕對不要做!!!! 逗號可以包含在文件夾名稱中,如果使用逗號作為分隔符,可能會給程序帶來許多關鍵問題。
您可以在Windows的文件夾名稱中使用非法字符。 \\ / : * ? " < > |
您也不能使用\\
和/
因為路徑可能存儲為c:\\\\data\\\\
並且使用'\\'作為分隔符是不好的,並且它們也可能存儲為c:/data/
所以使用/
有風險。 我認為使用*
或|
也許是一個好主意,因為它們是非法的,並且它們不能位於文件夾路徑的任何位置,並且具有某些文件夾路徑的字符串是可讀的,並且可以簡單地由see *
或|
識別|
作為分隔符。
String[] paths = s.Split(new char[]{'*'}, StringSplitOptions.RemoveEmptyEntries);
listBox1.Items.AddRange(paths);
其中s是您從設置文件中讀取的串聯文件夾路徑的字符串。 你也可以用
String[] paths = s.Split(new char[]{'*'}, StringSplitOptions.RemoveEmptyEntries);
listBox1.DataSource = paths;
您可以這樣做,然后創建一個字符串。在逗號上分割,然后將列表框的源設置為分割的結果。
string settings = GetFromConfig();
var items = settings.Split(',');
listBox1.DataSource = items;
您可以在設置文件中使用StringCollection 。
進入集合后,您只需將它們放回List<String>
,然后通過ListBox.Items
屬性(特別是Add
方法)將這些項添加回去。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.