Сайт разработчика Александр Климова

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Настройки

NET Framework 2.0 позволяет сохранять и извлекать данные, к которым нужен доступ между запусками приложения. Подобные данные называются settings (конфигурационные настройки). Настройки бывают пользовательскими и программными. Например, можно сохранять в настройках цвет формы, шрифтов, учитывая предпочтения пользователя программы. Также вы можете сохранять строку соединения с базой данных и так далее.

Программисты C# могут для сохранения настроек использовать пространство имен Properties. Рассмотрим эту возможность подробнее: узнаем разницу между пользовательскими и программными настройками, как создавать настройки во время разработки, как получить доступ к настройкам во время выполнения приложения и т.д.

Программные и пользовательские настройки

Настройки имеют четыре свойства:

  • Name: Свойство Name указывает на имя настройки, чтобы получить доступ к значению настройки во время выполнения.
  • Type: Type указывает тип, к которому относится настройка. Это может быть числовое значение, строка или тип System.Color.
  • Scope: Свойство Scope указывает на способ доступа: пользовательский или программный. Может принимать два значения Application и User. Об этом чуть ниже.
  • Value: Свойство Value хранит значения, возвращаемые при обращении к настройкам. Значение должно иметь тип, определенный в свойстве Type.

Названия этих свойств говорят сами за себя. Name, Type и Value понятны любому программисту, а свойство Scope требует некоторого объяснения. Выше уже говорилось, что настройки бывают программными и пользовательскими. Настройки приложения не зависят от пользователя и требуются для самого приложения. Пользовательские настройки на саму программу влияют меньше и более безопасны по своей сути.

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

Создание новых настроек во время разработки

Вы можете создать новую настройку во время разработки приложения, используя дизайнер Setting, который имеет сеточный (grid) интерфейс. С помощью данного дизайнера вы можете задать новую настройку и установить нужные значения для Name, Type, Scope и Value. После создания настройки, вы можете обращаться к ней при помощи механизма, описанного ниже.

Создаем новую настройки во время разработки

  1. В Solution Explorer раскройте узел Properties вашего проекта.
  2. В Solution Explorer сделайте двойной щелчок на файле .settings, к которому вы хотите добавить новую настройку. По умолчанию это будет Settings.settings.
  3. В дизайнере Settings установите Name, Type, Scope и Value для вашей настройки. Каждый ряд соответствует одной настройке. Рисунок ниже показывает, как выглядит дизайнер Settings.

Таким же образом вы можете использовать дизайнер Settings для изменения уже существующих значений настроек.

Изменение значения настройки между запусками программы

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

  1. Используя стандартный Блокнот или другой подходящий текстовый редактор, откройте файл <AssemblyName>.exe.config, связанный с вашим приложением.
  2. Найдите строку с нужной настройкой. Это может выглядеть следующим образом:
    <setting name="Setting" serializeAs="String">
       <value>This is the setting value
    </setting>
    
  3. Введите новое значение и сохраните файл.

Использование настроек во время исполнения программы

Настройки доступны для приложения через код во время работы. Вы можете получить значение настройки или записать новое значение, используя пространство имен Properties.

Чтение настроек во время исполнения

Вы можете прочитать программно настройки при помощи пространства имен Properties, которое хранит настройки по умолчанию в объекте Properties.Settings.Default. Когда вы пишете код, который использует эти настройки, они появляются в IntelliSense и строго типизированы. Таким образом, если вы в настройках используете тип System.Drawing.Color, то может использовать тип без приведения типов, как показано ниже:

this.BackColor = Properties.Settings.Default.myColor;

Сохранение пользовательских настроек во время выполнения

Пользовательские настройки можно менять во время исполнения, просто изменяя нужные значения. Новые значения действуют, пока выполняется программа. Если вы хотите сохранить измененные настройки, то вызывайте метод Settings.Save. Настройки будут сохранены в файле *.config.

Для доступа к пользовательской настройке и присвоения нового значения используйте код:

 
Properties.Settings.Default.myColor = Color.AliceBlue;

Для сохранения измененной настройки к следующему запуску программы используйте Save:

Properties.Settings.Default.Save();

Использование альтернативных настроек

В некоторых случаях требуется сохранять несколько наборов настроек. Например, если вы разрабатываете приложение, в котором определенные настройки изменяются очень часто, то, возможно, имеет смысл вынести эти настройки в другой файл. В таком случае можно будет вносить изменения в созданный файл, не затрагивая другие настройки, не требующие частого изменения. Visual Studio 2008 позволяет добавлять дополнительные наборы настроек в проект. Например, вы можете добавить новый набор настроек под именем SpecialSettings, и далее получать доступ в коде через объект Properties.SpecialSettings.

Добавление дополнительной группы настроек

  1. В меню Project выберите Add New Item. Откроется диалоговое окно Add New Item.
  2. В окне Add New Item выберите Settings File.
  3. В поле Name дайте имя для настройки как SpecialSettings.settings, далее щелкните на кнопке Add для добавления файла в ваше решение.
  4. В Solution Explorer перетащите файл с настройками в папку Properties. Это позволит получить доступ к новым настройкам через код.
  5. Добавьте настройки в этом файле как обычно. Вы можете получить доступ к настройкам через объект Properties.SpecialSettings.

Источник: Using Settings in C#

Перевод: Василий Котов и Александр Климов

Реклама