StringCollection в настройках приложения не сохраняется - PullRequest
3 голосов
/ 02 июля 2011

Я хотел бы использовать StringCollection в качестве настроек приложения, однако во время чтения это не проблема, я обнаружил, что настройки не сохраняются.

Как заставить это работать? Любое решение? В чем здесь проблема?

Код, который я использую:

    private static void AddToRecentProfiles(string path)
    {
        if (SpellCaster3.Properties.Settings.Default.RecentProfiles == null) 
            SpellCaster3.Properties.Settings.Default.RecentProfiles = new StringCollection();

        int index = SpellCaster3.Properties.Settings.Default.RecentProfiles.IndexOf(path);
        if (index >= 0)
            SpellCaster3.Properties.Settings.Default.RecentProfiles.Swap(index, 0);
        else
            SpellCaster3.Properties.Settings.Default.RecentProfiles.Insert(0, path);

        if (SpellCaster3.Properties.Settings.Default.RecentProfiles.Count > SpellCaster3.Properties.Settings.Default.MaxRecentProfiles)
            SpellCaster3.Properties.Settings.Default.RecentProfiles.RemoveAt(SpellCaster3.Properties.Settings.Default.RecentProfiles.Count - 1);

        SpellCaster3.Properties.Settings.Default.Save();

        OnRecentProfilesChanged(SpellCaster3.Properties.Settings.Default.RecentProfiles, EventArgs.Empty);
    }

Ответы [ 2 ]

10 голосов
/ 07 июля 2011

Я нашел решение самостоятельно, проблема в том, что если вы создаете коллекцию StringCollection с «новым» ключевым словом и сохраняете настройки, они не сохраняются.

Способ исправить это - «принудительно»"дизайнер настроек приложения, чтобы создать его для вас, как это сделать?Ну, это довольно просто, поместите stringcollection в качестве типа и вставьте 2/3 строки.Нажмите ок.Затем снова отредактируйте это значение и удалите все строки, чтобы оставить его «созданным, но пустым».

После этого вы можете просто использовать его, добавляя / удаляя строки и сохраняя настройки.И вы будете уверены, что он не будет нулевым!

4 голосов
/ 02 июля 2011

Настройки приложения могут быть ограничены областью действия на уровне приложения и на уровне пользователя, и вы можете выполнять запись только в настройки на уровне пользователя, поэтому, если у вас есть StringCollection область действия на уровне приложения, вы можете чтение только тех значений, которые вы определили во время компиляции, и добавление в коллекцию во время выполнения не повлияет при следующем запуске приложения.

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

...