C # - хранение нескольких каталогов в настройках и загрузка их в список - PullRequest
1 голос
/ 06 декабря 2010

В настоящее время у меня есть winform с элементом управления списком, который позволяет пользователю просматривать каталоги и добавлять их в список.Эти местоположения каталогов затем будут сохранены с использованием файла настроек приложения (в виде строки?), Но я не уверен, как следует отделять каждую строку каталога.После перезагрузки формы я бы хотел, чтобы все каталоги загружались в список как отдельные элементы из файла настроек.

Поэтому у меня есть два вопроса:

  1. Каков наиболее эффективный способ сохранения нескольких местоположений в файле настроек приложения?

  2. Как мне поступить при загрузке каталогов в список из настроек?(Помните, есть несколько каталогов)

Моя идея состояла в том, чтобы хранить все каталоги в одной строковой настройке и разделять их запятой, но я не уверен, есть ли более эффективный методсделать это.

Ответы [ 3 ]

1 голос
/ 06 декабря 2010

НЕТ !!!! НИКОГДА НЕ ДЕЛАЙТЕ ЭТОГО !!!! Запятая может быть включена в имя папки, и если вы используете запятую в качестве разделителя, это может вызвать много критических проблем в вашей программе.

вы можете использовать недопустимые символы в именах папок в 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 голосов
/ 06 декабря 2010

Вы можете использовать StringCollection в файле настроек.

Оказавшись в коллекции, вы можете просто положить их обратно в List<String>, а затем добавить элементы обратно через свойство ListBox.Items, в частности метод Add.

0 голосов
/ 06 декабря 2010

Вы можете сделать это, а затем сделать строку. Разделите запятую и установите в качестве источника списка значение результата разделения.

string settings = GetFromConfig();
var items = settings.Split(',');
listBox1.DataSource = items;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...