![](/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.