Поделиться через


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

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

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

Эту процедуру также можно выполнить с помощью минимального кода в конструкторе Visual Studio. См. также руководство по созданию настроек приложения с использованием конструктора.

Создание параметров приложения программным способом

  1. Добавьте новый класс в проект и переименуйте его. Для этой процедуры мы вызовем этот класс MyUserSettings. Измените определение класса таким образом, чтобы класс был производным от ApplicationSettingsBase.

  2. Определите свойство в этом классе-оболочке для каждого необходимого параметра приложения и применяйте это свойство либо с 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
    
  3. Создайте экземпляр этого класса-оболочки в приложении. Обычно это частный член основной формы. Теперь, когда вы определили класс, необходимо привязать его к свойству; В этом случае свойство 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
    
  4. Если вы предоставляете способ изменения параметров во время выполнения, вам потребуется сохранить текущие параметры пользователя на диск при закрытии формы или другие изменения будут потеряны.

    //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.

См. также