次の方法で共有


方法: アプリケーション設定を作成する

マネージド コードを使用すると、新しいアプリケーション設定を作成し、フォームまたはフォームのコントロールのプロパティにバインドして、これらの設定が実行時に自動的に読み込まれて保存されるようにすることができます。

次の手順では、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
    

    これで、新しいアプリケーション設定が正常に作成され、指定したプロパティにバインドされました。

次の例は、2 つのアプリケーション スコープ設定と 2 つのユーザー スコープ設定を定義するアプリケーション設定ファイルを示しています。 作成した設定の名前を、ファイルの先頭にある <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は、情報をプレーン テキストとして構成ファイルに保持します。 これにより、現在のユーザーのオペレーティング システムによって提供されるファイル アクセス セキュリティのセキュリティが制限されます。 このため、構成ファイルに格納されている情報に注意する必要があります。 たとえば、アプリケーション設定の一般的な用途の 1 つは、アプリケーションのデータ ストアを指す接続文字列を格納することです。 ただし、セキュリティ上の問題があるため、このような文字列にはパスワードを含めてはなりません。 接続文字列の詳細については、「SpecialSetting」を参照してください。

も参照