Пользовательские настройки не сохраняются (Settings.Default.Save ();) - PullRequest
4 голосов
/ 14 августа 2010

В свойствах проекта я создал такую ​​настройку, как этот

NumberOfUsers int User 10

Столбцы Имя, Тип, Область и Значение.

Затем есть ComboBox, где пользователь может установить NumberOfUsers.Это комбо имеет событие SelectedIndexChanged, где я сохраняю изменения всякий раз, когда пользователь меняет значение комбо.Вот код:

Settings.Default.NumberOfUsers = combo1.SelectedIndex;
Settings.Default.Save();

Форма с этим комбо вызывается из родительского как frm.ShowDialog();, и в Конструкторе дочерней формы я пытаюсь установить выбранный индекс комбо на основе записи Настройки

combo1.SelectedIndex = Settings.Default.NumberOfUsers;

Тем не менее, это НЕ работает, то есть комбо не извлекает значение из настройки, а скорее по умолчанию 0 в качестве выбранного индекса.

Кто-нибудь знает, где я ошибаюсь?

Ответы [ 3 ]

5 голосов
/ 14 августа 2010

Я думаю, вы не ошиблись. Насколько я знаю, VS также регенерирует файл конфигурации во время сборки. Я бы попробовал это на тестовой машине.
Он будет хранить пользовательские настройки в AppData вашего пользователя (локально или в роуминге?) Примерно так:

AppData \ [Local_or_Roaming] \ YourCompanyName \ yourprogram.exe_Url _ [...] \ 1.0.0.0 \ user.config

Длинное имя в середине будет s.g. разные, но я думаю, вы найдете это легко. Посмотрите на этот файл и посмотрите, хранит ли он новые значения или нет.

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

0 голосов
/ 14 августа 2010

Вы вводите новое значение для NumberOfUsers в ComboBox или выбираете его из выпадающего списка?
Если вы введете значение, SelectedIndex не изменится, поэтому событие не будет запущено.

Также ComboBox заполняется значениями от 0 до 10 или у вас есть код для обработки ArgumentOutOfRangeExceptions

0 голосов
/ 14 августа 2010

Может быть, так:

Properties.Settings.Default.NumberOfUsers = combo1.SelectedIndex;
Properties.Settings.Default.Save();
combo1.SelectedIndex = Properties.Settings.Default.NumberOfUsers;
...