Share via


방법: 애플리케이션 설정 만들기

관리 코드를 사용하여 새 애플리케이션 설정을 만들고, 이러한 설정이 런타임에 자동으로 로드 및 저장되도록 폼의 속성이나 폼의 컨트롤에 바인딩할 수 있습니다.

다음 절차에서는 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을 참조하세요.

참고 항목