Практическое руководство. Создание параметров приложения
С помощью управляемого кода можно создавать параметры приложения и привязывать их к свойствам формы или ее элементов управления, чтобы эти параметры загружались и сохранялись автоматически во время выполнения.
В представленной ниже процедуре вручную создается класс-оболочка, производный от класса ApplicationSettingsBase. К этому классу добавляется открытое свойство для каждого параметра приложения, который требуется предоставить.
Эту процедуру можно также выполнить с помощью минимального объема кода в конструкторе Visual Studio. См. также: Практическое руководство. Создание параметров приложения с помощью конструктора.
Создание параметров приложения программными средствами
Добавьте в проект новый класс и переименуйте его. В данной процедуре этот класс будет называться
MyUserSettings
. Измените определение класса так, чтобы он стал производным от ApplicationSettingsBase.Определите в этом классе-оболочке свойство для каждого требуемого параметра приложения и примените его с атрибутом ApplicationScopedSettingAttribute или UserScopedSettingAttribute в зависимости от области действия параметра. Подробнее об области действия параметров см. в разделе Общие сведения о параметрах приложений. На этом этапе код должен выглядеть так:
using System; using System.Configuration; using System.Drawing; public class MyUserSettings : ApplicationSettingsBase { [UserScopedSetting()] [DefaultSettingValue("white")] public Color BackgroundColor { get { return ((Color)this["BackgroundColor"]); } set { this["BackgroundColor"] = (Color)value; } } }
Imports System.Configuration Public Class MyUserSettings Inherits ApplicationSettingsBase <UserScopedSetting()> _ <DefaultSettingValue("white")> _ Public Property BackgroundColor() As Color Get BackgroundColor = Me("BackgroundColor") End Get Set(ByVal value As Color) Me("BackgroundColor") = value End Set End Property End Class
Создайте экземпляр этого класса-оболочки в приложении. Как правило, он является закрытым членом главной формы. Определив класс, нужно привязать его к свойству, в данном случае к свойству BackColor формы. Это можно сделать в обработчике событий
Load
вашей формы.MyUserSettings mus; private void Form1_Load(object sender, EventArgs e) { mus = new MyUserSettings(); mus.BackgroundColor = Color.AliceBlue; this.DataBindings.Add(new Binding("BackColor", mus, "BackgroundColor")); }
Dim Mus As MyUserSettings Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Mus = New MyUserSettings() Mus.BackgroundColor = Color.AliceBlue Me.DataBindings.Add(New Binding("BackColor", Mus, "BackgroundColor")) End Sub
Если вы предоставляете возможность изменения параметров во время выполнения, необходимо сохранять текущие параметры пользователя на диск при закрытии формы, иначе изменения будут потеряны.
//Make sure to hook up this event handler in the constructor! //this.FormClosing += new FormClosingEventHandler(Form1_FormClosing); void Form1_FormClosing(object sender, FormClosingEventArgs e) { mus.Save(); }
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Mus.Save() End Sub
Теперь новый параметр приложения успешно создан и связан с указанным свойством.
В следующем примере показан файл параметров приложения, определяющий два параметра область приложения и два параметра область пользователя. Необходимо добавить имена параметров, созданных в качестве записей в <элементе configSections> в верхней части файла.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" />
</sectionGroup>
</configSections>
<applicationSettings>
<WindowsApplication1.Properties.Settings>
<setting name="Cursor" serializeAs="String">
<value>Default</value>
</setting>
<setting name="DoubleBuffering" serializeAs="String">
<value>False</value>
</setting>
</WindowsApplication1.Properties.Settings>
</applicationSettings>
<userSettings>
<WindowsApplication1.Properties.Settings>
<setting name="FormTitle" serializeAs="String">
<value>Form1</value>
</setting>
<setting name="FormSize" serializeAs="String">
<value>595, 536</value>
</setting>
</WindowsApplication1.Properties.Settings>
</userSettings>
</configuration>
Безопасность .NET Framework
Поставщик параметров по умолчанию, LocalFileSettingsProvider, сохраняет сведения в файлах конфигурации в виде обычного текста. В результате безопасность зависит от уровня разрешений на доступ к файлу, предоставляемого операционной системой текущему пользователю. Поэтому при хранении информации в файлах конфигурации необходимо соблюдать осторожность. Например, параметры приложения часто используются для хранения строк подключений, которые указывают на хранилище данных приложения. Однако в целях безопасности в таких строках не должны содержаться пароли. Подробнее о строках подключения см. в разделе SpecialSetting.
См. также
.NET Desktop feedback