Porady: tworzenie ustawień aplikacji

Za pomocą kodu zarządzanego można utworzyć nowe ustawienia aplikacji i powiązać je z właściwościami w formularzu lub kontrolkach formularza, aby te ustawienia były ładowane i zapisywane automatycznie w czasie wykonywania.

W poniższej procedurze ręcznie utworzysz klasę otoki, która pochodzi z klasy ApplicationSettingsBase. Do tej klasy należy dodać właściwość publicznie dostępną dla każdego ustawienia aplikacji, które chcesz uwidocznić.

Tę procedurę można również wykonać przy użyciu minimalnego kodu w projektancie programu Visual Studio. Zobacz też Instrukcje: tworzenie Ustawienia aplikacji przy użyciu Projektant.

Aby programowo utworzyć nową aplikację Ustawienia

  1. Dodaj nową klasę do projektu i zmień jej nazwę. W tej procedurze wywołamy tę klasę MyUserSettings. Zmień definicję klasy, aby klasa pochodziła z ApplicationSettingsBaseklasy .

  2. Zdefiniuj właściwość dla tej klasy otoki dla każdego wymaganego ustawienia aplikacji i zastosuj tę właściwość za ApplicationScopedSettingAttribute pomocą właściwości lub UserScopedSettingAttribute, w zależności od zakresu ustawienia. Aby uzyskać więcej informacji na temat zakresu ustawień, zobacz Application Ustawienia Overview (Omówienie usługi Application Ustawienia). Do tej pory kod powinien wyglądać następująco:

    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. Utwórz wystąpienie tej klasy otoki w aplikacji. Zazwyczaj jest to prywatny element członkowski formularza głównego. Teraz, gdy zdefiniowano klasę, musisz powiązać ją z właściwością; w tym przypadku BackColor właściwość formularza. Można to zrobić w procedurze obsługi zdarzeń formularza 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. Jeśli udostępnisz sposób zmiany ustawień w czasie wykonywania, musisz zapisać bieżące ustawienia użytkownika na dysku po zamknięciu formularza lub inne zmiany zostaną utracone.

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

    Pomyślnie utworzono nowe ustawienie aplikacji i powiązaliśmy je z określoną właściwością.

W poniższym przykładzie przedstawiono plik ustawień aplikacji, który definiuje dwa ustawienia o zakresie aplikacji i dwa ustawienia o zakresie użytkownika. Należy dodać nazwy ustawień utworzonych jako wpisy w <elemecie configSections> w górnej części pliku.

<?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>

Zabezpieczenia.NET Framework

Dostawca ustawień domyślnych, LocalFileSettingsProvider, utrwala informacje w plikach konfiguracji jako zwykły tekst. Ogranicza to zabezpieczenia zabezpieczeń dostępu do plików zapewniane przez system operacyjny dla bieżącego użytkownika. W związku z tym należy zachować ostrożność przy użyciu informacji przechowywanych w plikach konfiguracji. Na przykład jednym z typowych zastosowań ustawień aplikacji jest przechowywanie parametry połączenia wskazujących magazyn danych aplikacji. Jednak ze względu na obawy związane z zabezpieczeniami takie ciągi nie powinny zawierać haseł. Aby uzyskać więcej informacji na temat parametry połączenia, zobacz SpecialSetting.

Zobacz też