Сохранить настройки в Settings
Доброго времени суток.
Хочу хранить настройки в WPF-приложении в Settings. Соответственно добавил поля (двойной клик по Settings).
Читать без проблем:
А при попытке записать:
В классе настроек видим только get:
Конечно, править класс не хорошо, т.к. автогенерируемый.
Как добиться возможности сохранения стандартными методами?
Можно ли сохранить настройки контролов без использования Settings
Можно ли сохранить настройки контролов БЕЗ использования Properties.Resources.Settings?
Настройки приложения Settings.settings
Почему если я изменяю AssemblyVersion в AssemblyInfo на предыдущее значения, то при запуске.
Странно, вообще-то по дефолту там и get и set:
Добавлено через 4 минуты
Update:
Понял, в диспетчере настроек поменяйте область с «Приложение» на «Пользователь»
Странно, вообще-то по дефолту там и get и set:
Добавлено через 4 минуты
Update:
Понял, в диспетчере настроек поменяйте область с «Приложение» на «Пользователь»
Настройки (Properties.Settings) работают некорректно
Добрый день, форумчане. У меня такая проблема: в настройках хранится индекс выбранного элемента в.
Где хранятся настройки из Properties.Settings.Default?
А еще вопрос по хранению параметра в Properties.Settings.Default.ПАРАМЕТР А где он прячется? ну.
Не сохраняются настройки в Nvidia Settings после обновления драйвера
Помогите, пожалуйста! Каждый раз, как только выходит новая версия драйвера Nvidia, я обновляю и.
Как сохранить данные из CheckedListBox в Properties.Settings?
Подскажите как правильно в виде List сохранить и потом загрузить Добавлено через 13 часов 3.
Использование visual C# для хранения и получения настраиваемой информации из файла конфигурации приложения
В этой статье вводится, как хранить настраиваемые сведения из файла конфигурации, которые можно получить позже во время запуска его связанным приложением. Это полезно, когда необходимо определить данные, связанные с приложением.
Оригинальная версия продукта: Visual C #
Исходный номер КБ: 815786
Требования
В следующем списке описаны необходимое оборудование и программное обеспечение:
В этой статье предполагается, что вы знакомы со следующими разделами:
Создание приложения консоли, которое читает файл конфигурации
В файле конфигурации, связанном с приложением, можно хранить параметры приложений. Файлы конфигурации сохраняются в формате XML.
Чтобы создать консольное приложение, которое читает содержимое связанного файла конфигурации во время запуска, выполните следующие действия:
В меню File указать на New, а затем выбрать Project.
выберите visual C# в Project типах, а затем выберите консольное приложение в шаблонах. Назови проект ConConfig. По умолчанию Visual C# создает класс с именем Program.
Убедитесь, что отображается окно Обозреватель решений. Если его не видно, нажмите клавишу CTRL+ALT+L.
В Обозревателе решений щелкните правой кнопкой мыши имя проекта, выберите Добавить, а затем выберите Новый элемент.
В списке Добавление новых элементов выберите XML-файл.
В текстовом окне Имя введитеApp.config, а затем выберите Добавить.
Вы можете использовать файл конфигурации приложений для сбора настраиваемой настройки приложения, которые вы сохраняете в формате ключ/значение. Элементы можно включить в раздел связанного файла конфигурации. Каждая пара ключей и значений имеет один элемент. Элемент имеет следующий формат:
Например, в следующем файле конфигурации содержится раздел, который указывает три пары ключей и значений:
В Обозревателе решений дважды щелкните Program.cs, чтобы отобразить окно кода. Добавьте следующие утверждения в модуль кода.
Эти утверждения должны отображаться перед любыми другими утверждениями в файле.
Добавьте ссылку на System.Configuration.dll, следуя следующим шагам:
Чтобы удерживать значение из ключа файла конфигурации в разделе файл конфигурации, заявите строковую переменную в разделе Main следующим образом:
Следующий код извлекает значение Key0 атрибута из связанного файла конфигурации. Затем код помещает это значение в sAttr переменную строки. Если ключа для этого значения не существует, в них ничего не sAttr хранится.
Чтобы отобразить значение, которое приложение извлекает в окне Консоли, используйте Console.WriteLine следующим образом:
Свойство AllKeys NameValueCollection ссылок строковый массив, который имеет запись для каждого ключа, который приложение извлекает. Используйте конструкцию foreach для итерации через массив, чтобы получить доступ к каждому AllKeys ключу, который извлекает приложение. Каждая запись ключа AllKeys — это тип данных строки.
Внутри foreach конструкции используйте для отображения ключа и Console.WriteLine связанного с ним значения в окне Консоли. Текущий ключ, в который находится процессы s приложения. Используйте его в качестве индекса для sAllNameValueCollection получения связанного значения.
Полное перечисление кода
Полный список файлов конфигурации (ConConfig.exe.config)
Убедитесь, что он работает
Нажмите кнопку F5 для запуска кода. В окне Консоли должны отображаться пары ключей и значений из раздела связанного файла конфигурации следующим образом:
Устранение неполадок
Файл конфигурации сохранен в формате XML. Убедитесь, что вы следуете всем правилам синтаксиса XML. Помните, что XML является чувствительным к делу. Если XML не сформирован, или если элемент опечатка, вы получите System.Configuration.Configuration исключение.
Файл конфигурации должен быть сохранен в той же папке, что и связанное с ним приложение.
Для имени файла конфигурации необходимо использовать следующий синтаксис:
..config
какой подход вы рекомендуете для сохранения пользовательских настроек в приложении WPF windows (desktop)? Обратите внимание, что идея заключается в том, что пользователь может изменить свои настройки во время выполнения, а затем закрыть приложение, а затем при запуске приложения позже приложение будет использовать текущие настройки. Эффективно, то это будет выглядеть, как будто настройки приложения не меняются.
Q1-база данных или другой подход? У меня есть база данных sqlite, которой я буду использование в любом случае, следовательно, использование таблицы в базе данных было бы так же хорошо, как и любой подход?
Q3-Смогл Настройки приложения будут использоваться для этого? Если да, то есть ли какие-либо специальные задачи, необходимые для обеспечения сохраняемости здесь? Также что произойдет с использованием значения «по умолчанию» в конструкторе настроек приложения в этом случае? Будет ли значение по умолчанию переопределять любые параметры, сохраненные между запуском приложения? (или вам не нужно использовать значение по умолчанию)
9 ответов
можно использовать Настройки Приложения для этого использование базы данных не является лучшим вариантом, учитывая время, затрачиваемое на чтение и запись настроек (особенно если вы используете веб-службы).
чтобы восстановить объекты при следующем запуске приложения, прочитайте Settings строка интереса и Deserialize к ожидаемому типу T (который на этот раз должен быть явно указан как аргумент типа Deserialize ).
Я также предпочитаю идти с сериализацией в файл. XML-файлы соответствуют в основном всем требованиям. Вы можете использовать ApplicationSettings build, но у них есть некоторые ограничения и определенное, но (для меня) очень странное поведение, где они хранятся. Я часто их использую, и они работают. Но если вы хотите иметь полный контроль, как и где они хранятся я использую другой подход.
вот простой пример (не проверял)-
и вот как его использовать. Можно загрузить значения по умолчанию или переопределить их с помощью пользователя настройки, просто проверяя, существуют ли пользовательские настройки:
может быть, кто-то вдохновлен этим подходом. Вот как я это делаю уже много лет, и я вполне доволен этим.
наиболее типичный подход к этому вопросу: изолированное хранилище.
Сериализуйте состояние элемента управления в XML или другой формат (особенно легко, если вы сохраняете свойства зависимостей с помощью WPF), затем сохраните файл в изолированном хранилище пользователя.
Если вы хотите пройти маршрут настройки приложения, я сам пробовал что-то подобное в какой-то момент. хотя приведенный ниже подход может быть легко адаптирован для использования изолированных Хранение:
помимо базы данных, вы также можете иметь следующие параметры для сохранения пользовательских настроек
реестр в разделе HKEY_CURRENT_USER
в файле AppData папку
используя Settings файл в WPF и установив его область как User
обычно я делаю такие вещи, определяя пользовательский [ Serializable ] класс настроек и просто сериализация его на диск. В вашем случае вы можете так же легко сохранить его, как строковый blob в вашей базе данных SQLite.
во всех местах, где я работал, база данных была обязательной, потому что поддержки приложения. Как сказал Адам, пользователь может не быть за своим столом или машина может быть выключена, или вы можете быстро изменить чью-то конфигурацию или назначить новому столяру конфигурацию по умолчанию (или члена команды).
Если настройки, вероятно, будут расти по мере выпуска новых версий приложения, вы можете сохранить данные в виде blobs, которые затем могут быть десериализовано приложением. Это особенно полезно, если вы используете что-то вроде Prism, который обнаруживает модули, так как вы не можете знать, какие настройки модуль вернет. Капли могут быть введены составным ключом username/machine. Таким образом, вы можете иметь разные настройки для каждой машины.
Я не использовал встроенный класс настроек, поэтому я воздержусь от комментариев.
C#, способы хранения настроек программы
Введение
В интернете приведено очень много способов хранения настроек программы, но все они как-то разбросаны, поэтому я решил их собрать вместе и расписать, как этим пользоваться.
C# и app.config
На хабре уже была посвящена этому тема, поэтому… перейти
C# и Properties.Settings
Информация о Properties.Settings
Организация Properties.Settings — это обычный xml файл, который можно найти в папке пользователя:
С:\ Users \ [user name] \ AppData \ Local \ [ (Project Name) or (AssemblyCompany) ] \ [name project_cashBuild] \ [AssemblyVersion] \ user.config
Я создал 3-и переменные и выбрал область их использования: 2- область пользователь и 1- приложение.
Различие между областями просты. Область приложения можно только читать, а пользователь — изменять и читать.
Вернемся к переменным:
Результаты работы программы
Первый запуск, мы видим, что кол-во запусков равно 1. И теста в richTextBox1 нет.
Теперь напишем и сохраним текст.
При втором запуске мы видим, что текст сохранен, и кол-во запусков уже 2-ва.
Очень удобно использовать этот объект, если надо работать в разных областях видимости в одном проекте. Метод хорош, когда вам не надо, чтоб рядовой пользователь рылся в файлах настройки программы.
C# и ini-файлы
С ini-файлами все на оборот, они лежат в папке рядом с программой, что позволяет пользователю изменить настройки вне-программы. Данный способ хорош, если настройки программы заносятся вручную. Например, эмулятор для запуска игры без лицензии (тотже revLoader).
Теперь перейдем к нашей теме. Для работы с таким типом файлов, нам нужно создать класс по работе с ним. Создаем класс, например «IniFile», подключаем пространство имен, которых нет:
А теперь разбираем по-порядку:
Теперь переходим в основную программу.
Результаты работы программы
При первом запуска, у нас нет файла config.ini. Поэтому при проверке возвращаются fasle и мы приравниваем окно к минимальным параметрам.
Меняем параметры окна и жмем «Применить»
Редактируем файл config.ini руками и жмем загрузить.
На этом все, в следующий раз опишу работу с xml файлами и с бинарными файлами.
Wpf сохранение настроек приложения
Лучший отвечающий
Вопрос
Доброго времени суток!
При написании программы возникла небольшая проблемка. никак немогу сохранить настройки элементов управления.
Имеется: ComboBox, в котором содержится список стилей для изменения внешнего вида приложения и TextBox, в котором содержится некоторый текст.
Задача: При выборе пользователем одиного из стилей внешнего вида, измения текста в TextBox’e и закрытия программы, при следующем запуске приложения пользователь сразу мог видеть выбранный им ранее стиль и текст.
Надеюсь на вашу помощь в решении проблемы!
Ответы
Вот пара строк кода из того что нашел на сохранение через settings, но добиться результата неполучилось:
Может я неправильно их применяю или еще что?
Вообще очень странно, что у вас этот код не работает.
1) создаем wpf приложение
2) открываем свойства проекта, идем во вкладку Settings, создаем 2 настройки Directory (string) и Skin (int). Scope = User
3) там же ставим им значения по умолчанию
4) добавляем два тестовых textbox-а для вывода и ввода информации (textBoxDirectory, textBoxSkin) и кнопку для сохранения изменений
5) добавляем код:
Запускаем приложение, в textbox-ах должны быть значения по умолчанию. Изменяем, нажимаем кнокпу, перезапускаем приложение, получаем изменненные значения.