繁体   English   中英

C#-在设置中存储多个目录并将其加载到列表框中

[英]C# - Storing multiple directories in settings and loading them into listbox

我目前有一个带有列表框控件的winform,该控件允许用户浏览目录并将其添加到列表框中。 然后将使用应用程序设置文件(作为字符串?)保存这些目录位置,但是我不确定如何分隔每个目录字符串。 重新加载表单后,我希望所有目录都作为设置文件中的单个项加载到列表框中。

所以我从技术上有两个问题:

  1. 在应用程序设置文件中保存多个位置的最有效方法是什么?

  2. 如何将目录从设置加载到列表框中? (请记住,有多个目录)

我的想法是将所有目录存储在一个字符串设置中,并用逗号分隔它们,但是我不确定是否有更有效的方法来执行此操作。

没有!!!! 绝对不要做!!!! 逗号可以包含在文件夹名称中,如果使用逗号作为分隔符,可能会给程序带来许多关键问题。

您可以在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM