Примеры Delphi и C# из жизни

Примеры программирования на языках Delphi, C#

 




Настройки приложения C# | C#

Несколько слов о хранении и доступе к настройкам приложения.

При создании проекта, среда автоматически создает в пространстве имен Properties класс для манипулировния настройками приложения Settings.

Замечу, что такой класс может быть не единственный в приложении. Для добавления другого класса для хранения настроек необходимо добавить в проект новый класс настроек, используя шаблон Settings File в меню редактора Project -> Add New Item -> Template: Settings file.

Доступ к настройкам, хранимым в данных классах осуществляется так:
Properties.Settings.Default.<имя вашего параметра>


Параметры могут быть любого поддерживаемого типа. Чтобы открыть редактор параметров необходимо дважды кликнуть на соответствующем .settings файле.

Поля редактора Name, Type, Value не требуют пояснений. Остановлюсь подробнее на поле Scope. Оно может принимать значения User или Application (настройки Пользователя или настройки Приложения).

    Основное отличие:
  • настройки Приложения являются параметром только для чтения и хранятся в файле .exe.config в папке приложения. Это обычный XML файл и при необходимости его можно отредактировать вручную.
  • настройки Пользователя можно как читать так и изменять. Они хранятся отдельно также в XML файле в папке профиля текущего пользователя. <Профиль>\<Имя компании>\<Имя приложения>_<Тип>_<Хэш>\<Версия>\user.config.
  • <Профиль> - локальная папка профиля пользователя. <Имя компании> - обозначается аттрибутом [AssemblyCompany]. <Имя приложения> - .exe файл. <Тип> и <Хэш> - вычисляются на основании информации о домене приложения. <Версия> - обозначается аттрибутом [AssemblyVersion].


Путь к файлу настроек пользователя можно получить, используя функцию
Application.LocalUserAppDataPath


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

Если значения параметра меняются, сохранить их для дальнейшего использования можно так:
Properties.Settings.Default.Save();


Пример:
Point p = Properties.Settings.Default.MyPoint;
int i = Properties.Settings.Default.MyInt;
---
Properties.Settings.Default.MyPoint = p;
Properties.Settings.Default.MyInt = i;