Сохранение настроек свойств не работает должным образом - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть приложение для Windows, которое использует настройки.У меня есть несколько пользовательских настроек, которые пользователь может установить вручную, они установлены как Область пользователя.Метод сохранения работает нормально, однако, если приложение закрывается и затем открывается, значения возвращаются к значениям по умолчанию.

вот один пример моего кода для сохранения:

Properties.Settings.Default["LocalDefaultPrinter"] = Default_Printer;
Properties.Settings.Default.Save();

в чем может быть проблема?

Ответы [ 7 ]

3 голосов
/ 04 февраля 2011

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

Properties.Settings.Default.LocalDefaultPrinter = Default_Printer;
Properties.Settings.Default.Save();

РЕДАКТИРОВАТЬ: Ну, это не проблема - я смог сохранить нормально, используя ваш подход, при условии, что параметр был «Пользователь». Однако, если вы определите это как «Приложение», вы не сможете сохранить значение, потому что оно сохраняется в вашем файле application.config (свойства приложения не сохраняются обратно в этот файл в .Save).

2 голосов
/ 12 октября 2014

Для тех, у кого проблемы в WPF.

Вызовите Settings.Default.Upgrade(), чтобы получить значения не по умолчанию, когда вы хотите использовать сохраненные настройки.

2 голосов
/ 05 февраля 2011

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

2 голосов
/ 04 февраля 2011

Когда вы изменяете пользовательские настройки программным способом, вы не изменяете файл конфигурации приложения.Вы изменяете копию этих настроек в профиле пользователя, которые объединяются с конфигурацией приложения во время выполнения.

Вы проверили папку профиля пользователя для своих измененных настроек?Они там?Если это так, ваш код работает правильно.

Спасибо.* Джейсон 1005 *

1 голос
/ 07 февраля 2011

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

0 голосов
/ 23 марта 2012

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

0 голосов
/ 04 февраля 2011

Настройки области приложения доступны только для чтения, тогда как настройки области пользователя - чтение / запись.Вызов Save() сохранит пользовательские настройки между сеансами приложения.Если LocalDefaultPrinter является областью применения, это не будет сохраняться между сеансами.

Этот пост содержит информацию о том, как полностью использовать настройки.

...