Приветствую!
Не могу понять как работает файл настроек. Уже всю голову сломал. Итак, есть WPF приложение с файлом настроек. Он нужен что бы 1 раз при первом запуске показать сообщение с условиями пользования в программе. По умолчанию оно False Если пользователь их принимает то меняется на True если нет то программа просто закрывается и ничего не происходит и так пока пользователь не примет условия. И более при запуске окно показывать не нужно. Файл настроек создаю так : ПКМ по решению => Добавить => Создать элемент => Общие => Файл настроек (Settings1.settings). Добавляю булевское поле DisclaimerAccept со значение False :
Далее при запуске программы :
if (Settings1.Default.DisclaimerAccept == false)
{
Disclaimer disclamer = new Disclaimer();
disclamer.WindowStartupLocation = WindowStartupLocation.CenterScreen;
disclamer.ShowDialog();
}
Далее начинается магия. Когда я запускаю - окна не появляется а во время дебага DisclaimerAccept показывает True! При этом даже в app.config это значение ложь :
<userSettings>
<Myproject.Settings1>
<setting name="DisclaimerAccept" serializeAs="Binary">
<value>False</value>
</setting>
</Myproject.Settings1>
</userSettings>
UPD Сохранение настроек (если пользователь принял условия)
private void AcceptDisclaimer_click(object sender, RoutedEventArgs e)
{
Settings1.Default.DisclaimerAccept = true;
Settings1.Default.Save();
this.Close();
}
Не понимаю почему так происходит. Буду рад любой помощи или подсказке.
Вы выбрали "Пользователь", значит настройка будет храниться отдельно для каждого пользователя, и не в файле app.config приложения. Ведь несколько пользователей могут запускать приложение из одной папки, а настройки для них будут разные.
Возможные места, где может находиться файл с настройками:
C:\Documents and Settings\username\Local Settings\Application Data\ApplicationName C:\Users\username\AppData\Local\ApplicationName C:\Users\username\AppData\Roaming\ApplicationName
Соответственно, у вас все работает как надо, однажды вы галочку поставили и больше сообщение не вылазит. Если вы хотите отдельную логику для отладки, рекомендую использовать директиву #if DEBUG
Откройте ваш файл App.xaml.cs и перегрузите метод OnExit(ExitEventArgs e).
Далее добавьте ту да следующий код.
// В режиме дебага будем сбрасывать настройки на по умолчанию как было написано в режиме дизайнера
#if DEBUG
if(Settings1.Default.DisclaimerAccept)
{
Settings1.Default.DisclaimerAccept = false;
Settings1.Default.Save();
}
#endif
После можете менять его сколько угодно (в режиме отладки), при каждом выходе из программы он будет сбрасываться на указанные в дизайнере.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости