2010-12-06 27 views
1

我目前有一個帶有列表框控件的winform,允許用戶瀏覽目錄並將它們添加到列表框中。這些目錄位置然後將使用應用程序設置文件(作爲字符串?)保存,但我不知道應該如何分隔每個目錄字符串。在重新加載表單時,我希望所有的目錄都能從設置文件中加載到列表框中作爲單獨的項目。C# - 在設置中存儲多個目錄並將它們加載到列表框中

所以我在技術上有兩個問題:

  1. 什麼是拯救內的應用程序設置文件的多個位置的最有效方法是什麼?

  2. 我該如何去將這些目錄從設置中加載到列表框中? (請記住,有多個目錄)

我的想法是所有的目錄存儲在一個字符串設置,並將它們用逗號分隔,但我不知道是否有這樣做更有效的方法。

回答

1

不!永遠不要這樣做! 逗號可以包含在文件夾名稱中,如果使用逗號作爲分隔符,它可能會給您的程序帶來許多關鍵問題。

您可以使用Windows中文件夾名稱中非法的字符。 \/: * ? " < > |

也不能使用\/,因爲路徑也許店爲c:\\data\\和使用「\」作爲分隔符是壞的,他們也可能因此使用/是有風險的爲c:/data/存儲。我認爲使用*|也許是一個好主意,因爲它們是非法的,它們不能位於文件夾路徑的任何位置,並且具有一些文件夾路徑串聯的字符串是可讀的,並且可以簡單地被識別,參見*|作爲分隔符。

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

其中s是您從設置文件中讀取的連接文件夾路徑的字符串。 也可以使用

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

我甚至沒有想到的是,不能認爲沒有過我的腦海。謝謝。 – user 2010-12-06 20:38:55

0

你可以做到這一點,然後做一個字符串。對逗號分割,並將列表框的源設置爲分割的結果。

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

參見「沒有逗號」,上面:) – 2010-12-06 20:45:23

0

您可以在設置文件中使用StringCollection

一旦收藏,您可以將它們放回到List<String>,然後通過ListBox.Items屬性,特別是Add方法將其添加回來。

相關問題