Приветствую!
Не могу понять как работает файл настроек. Уже всю голову сломал. Итак, есть 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
После можете менять его сколько угодно (в режиме отладки), при каждом выходе из программы он будет сбрасываться на указанные в дизайнере.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У переменной типа string есть методыКак я понял эти методы принадлежат классу String
Можно ли как-то в сервис-контакте WCF, в интерфейсе, описать не методы, а аггрегированные объекты, в которых уже находятся нужные мне методы?...