iniファイル、レジストリに替わる設定ファイル(XML)

メモ:  Category:vb

VB2005からアプリケーション固有の設定やユーザーごとの設定を保存するために設定ファイルというものが用意されました。従来(VB6)の頃までは、iniファイルやレジストリを使用して設定を記録したりしていましたが、VB2005からはSettingsクラス使って設定を保存します。

設定ファイルには、2つのスコープが用意されています。

  • アプリケーション
  • ユーザー

アプリケーションは、読み取り専用となりアプリケーションの全ユーザーで共有されます。

これらの設定は、app.config ファイルの <applicationSettings>セクションに格納されます。

ユーザーは、ユーザー別の設定で読み書きが可能です。(アプリケーションレベルでも書き換えたい気がしますが)

アプリケーション構成ファイルは、**「Exe名.config」**という名前でExeと同じ場所に作成されます。

VB2005で設定ファイルを作成する。

実際に設定ファイルを作成するには、メニューから[プロジェクト]-[プロパティ]を選択します。

設定

プロパティの設定画面より左のタブ?から【設定】を選択します。

上記画面にアプリケーションに必要な設定を記述していきます。

コード中でこの設定ファイルの設定を必要とする場合、次のようにします。

strDB = My.settings.db

My.settings.user = bnote

VB2005での設定の裏側

VB2005では、上記設定を管理するために「MySettings」という以下のようなクラスが作成されます。

' かなり省略しています

Namespace My
    
    Partial Friend NotInheritable Class MySettings
        Inherits Global.System.Configuration.ApplicationSettingsBase


    End Class
End Namespace

Namespace My
    
    Friend Module MySettingsProperty
        
        Friend ReadOnly Property Settings() As Global.[set].My.MySettings
            Get
                Return Global.[set].My.MySettings.Default
            End Get
        End Property
    End Module
End Namespace

上記画面にて設定をすると、このクラス内に「Public Property」が作成され設定ファイルに指定した 値を取得することができます。

スコープをアプリケーションにした場合、クラス内に作成されるプロパティは読み取り専用となり 次のように作成されます。

Public ReadOnly Property db() As String
    Get
        Return CType(Me("db"),String)
    End Get
End Property

スコープがユーザーの場合、次のように作成されます。

Public Property User() As String
    Get
        Return CType(Me("User"),String)
    End Get
    Set
        Me("User") = value
    End Set
End Property

bluenote by BBB