英語で読む

次の方法で共有


ApplicationSettingsBase クラス

定義

Windows フォーム アプリケーションでアプリケーション設定機能を実装する、具象ラッパー クラスを派生する基本クラスとして機能します。

C#
public abstract class ApplicationSettingsBase : System.Configuration.SettingsBase, System.ComponentModel.INotifyPropertyChanged
継承
ApplicationSettingsBase
実装

次のコード例は、アプリケーション設定を使用して、場所、サイズ、背景色、タイトル バー テキストというメインフォームの属性を保持する方法を示しています。 これらの属性はすべて、 クラスの FormSettings 1 つのアプリケーション設定プロパティとして、それぞれ 、FormSizeFormBackColor、および FormTextという名前FormLocationで保持されます。 および SizeFormText除くすべてのデータは、関連付けられているフォーム プロパティにバインドされ、 を使用して既定の設定値がDefaultSettingValueAttribute適用されます。

フォームには、次の名前と関数を持つ 4 つの子コントロールが含まれています。

  • [色] 共通ダイアログ ボックスを表示するために使用される という名前btnBackColorのボタン。

  • アプリケーション設定に使用される Reload という名前btnReloadのボタン。

  • アプリケーション設定に使用される Reset という名前btnResetのボタン。

  • プログラムに関する状態情報を表示するために使用される という名前 tbStatus のテキスト ボックス。

アプリケーションを実行するたびに、フォームのタイトル テキストにピリオド文字が追加されます。

このコード例では、 という名前のクラスをColorDialog持つ Form と、 というcolorDialog1名前tbStatusStatusStripコントロールがToolStripStatusLabel必要です。 さらに、および という名前btnReloadbtnResetの 3 つのButtonオブジェクトが必要ですbtnBackColor

C#
partial class Form1 : Form
{
    private FormSettings frmSettings1 = new FormSettings();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);

        //Associate settings property event handlers.
        frmSettings1.SettingChanging += new SettingChangingEventHandler(
                                            frmSettings1_SettingChanging);
        frmSettings1.SettingsSaving += new SettingsSavingEventHandler(
                                            frmSettings1_SettingsSaving);

        //Data bind settings properties with straightforward associations.
        Binding bndBackColor = new Binding("BackColor", frmSettings1,
            "FormBackColor", true, DataSourceUpdateMode.OnPropertyChanged);
        this.DataBindings.Add(bndBackColor);
        Binding bndLocation = new Binding("Location", frmSettings1,
            "FormLocation", true, DataSourceUpdateMode.OnPropertyChanged);
        this.DataBindings.Add(bndLocation);

        // Assign Size property, since databinding to Size doesn't work well.
         this.Size = frmSettings1.FormSize;

        //For more complex associations, manually assign associations.
        String savedText = frmSettings1.FormText;
        //Since there is no default value for FormText.
        if (savedText != null)
            this.Text = savedText;
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        //Synchronize manual associations first.
        frmSettings1.FormText = this.Text + '.';
        frmSettings1.FormSize = this.Size;
        frmSettings1.Save();
    }

    private void btnBackColor_Click(object sender, EventArgs e)
    {
        if (DialogResult.OK == colorDialog1.ShowDialog())
        {
            Color c = colorDialog1.Color;
            this.BackColor = c;
        }
    }

    private void btnReset_Click(object sender, EventArgs e)
    {
        frmSettings1.Reset();
        this.BackColor = SystemColors.Control;
    }

    private void btnReload_Click(object sender, EventArgs e)
    {
        frmSettings1.Reload();
    }

    void frmSettings1_SettingChanging(object sender, SettingChangingEventArgs e)
    {
        tbStatus.Text = e.SettingName + ": " + e.NewValue;
    }

    void frmSettings1_SettingsSaving(object sender, CancelEventArgs e)
    {
        //Should check for settings changes first.
        DialogResult dr = MessageBox.Show(
                        "Save current values for application settings?",
                        "Save Settings", MessageBoxButtons.YesNo);
        if (DialogResult.No == dr)
        {
            e.Cancel = true;
        }
    }
}

//Application settings wrapper class
sealed class FormSettings : ApplicationSettingsBase
{
    [UserScopedSettingAttribute()]
    public String FormText
    {
        get { return (String)this["FormText"]; }
        set { this["FormText"] = value; }
    }

    [UserScopedSettingAttribute()]
    [DefaultSettingValueAttribute("0, 0")]
    public Point FormLocation
    {
        get { return (Point)(this["FormLocation"]); }
        set { this["FormLocation"] = value; }
    }

    [UserScopedSettingAttribute()]
    [DefaultSettingValueAttribute("225, 200")]
    public Size FormSize
    {
        get { return (Size)this["FormSize"]; }
        set { this["FormSize"] = value; }
    }

    [UserScopedSettingAttribute()]
    [DefaultSettingValueAttribute("LightGray")]
    public Color FormBackColor
    {
        get { return (Color)this["FormBackColor"]; }
        set { this["FormBackColor"] = value; }
    }
}

注釈

ApplicationSettingsBase は、Web ベースの SettingsBase アプリケーションで使用される クラスに次の機能を追加します。

  • 派生した設定ラッパー クラスの属性を検出する機能。 ApplicationSettingsBase は、後で説明するように、ラッパー クラスのプロパティに使用される宣言型モデルをサポートしています。

  • 上位レベル SaveReload メソッド。

  • 個々の設定の正確性を確保するために処理できる追加の検証イベント。

アプリケーション設定アーキテクチャでは、設定プロパティのグループにアクセスするには、 から ApplicationSettingsBase具象ラッパー クラスを派生させる必要があります。 ラッパー クラスは、次の方法でカスタマイズします ApplicationSettingsBase

  • アクセスするすべての設定プロパティに対して、対応する厳密に型指定されたパブリック プロパティがラッパー クラスに追加されます。 このプロパティには、 get 読み取り/書き込みアプリケーション設定の アクセサーと set アクセサーがありますが、読み取り get 専用設定のアクセサーのみが含まれます。

  • 設定のスコープ (アプリケーションまたはユーザー)、設定でローミングをサポートするかどうか、設定の既定値、使用する設定プロバイダーなどの設定プロパティの特性を示すには、ラッパー クラスのパブリック プロパティに適切な属性を適用する必要があります。 各プロパティは、 または UserScopedSettingAttributeを使用してスコープをApplicationScopedSettingAttribute指定するために必要です。 アプリケーション スコープの設定は、既定値 LocalFileSettingsProvider が使用されている場合は読み取り専用です。

クラスは ApplicationSettingsBase リフレクションを使用して、実行時にこれらの属性を検出します。 この情報のほとんどは、ストレージ、永続化形式などを担当する設定プロバイダー レイヤーに渡されます。

アプリケーションに複数の設定ラッパー クラスがある場合、各クラスは 設定グループを定義します。 各グループには、次の特性があります。

  • グループには、任意の数または種類のプロパティ設定を含めることができます。

  • ラッパー クラス SettingsGroupNameAttributeを で装飾する によってグループ名が明示的に設定されていない場合は、名前が自動的に生成されます。

既定では、すべてのクライアント ベースのアプリケーションは を LocalFileSettingsProvider 使用してストレージを提供します。 代替設定プロバイダーが必要な場合は、ラッパー クラスまたはプロパティを対応する SettingsProviderAttributeで修飾する必要があります。

アプリケーション設定の使用方法の詳細については、「Windows フォームのアプリケーション設定」を参照してください。

コンストラクター

ApplicationSettingsBase()

ApplicationSettingsBase クラスのインスタンスを既定の状態に初期化します。

ApplicationSettingsBase(IComponent)

指定された所有者コンポーネントを使用して、ApplicationSettingsBase クラスのインスタンスを初期化します。

ApplicationSettingsBase(IComponent, String)

指定された所有者コンポーネントと設定キーを使用して、ApplicationSettingsBase クラスのインスタンスを初期化します。

ApplicationSettingsBase(String)

指定された設定キーを使用して、ApplicationSettingsBase クラスのインスタンスを初期化します。

プロパティ

Context

設定グループに関連付けられているアプリケーション設定のコンテキストを取得します。

IsSynchronized

オブジェクトへのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。

(継承元 SettingsBase)
Item[String]

指定したアプリケーション設定プロパティの値を取得または設定します。

Properties

ラッパーの設定プロパティのコレクションを取得します。

PropertyValues

プロパティ値のコレクションを取得します。

Providers

ラッパーが使用するアプリケーション設定プロバイダーのコレクションを取得します。

SettingsKey

アプリケーション設定グループの設定キーを取得または設定します。

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetPreviousVersion(String)

同じアプリケーションの以前のバージョンの、名前付き設定プロパティの値を返します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

SettingsBase オブジェクトによって使用される内部プロパティを初期化します。

(継承元 SettingsBase)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnPropertyChanged(Object, PropertyChangedEventArgs)

PropertyChanged イベントを発生させます。

OnSettingChanging(Object, SettingChangingEventArgs)

SettingChanging イベントを発生させます。

OnSettingsLoaded(Object, SettingsLoadedEventArgs)

SettingsLoaded イベントを発生させます。

OnSettingsSaving(Object, CancelEventArgs)

SettingsSaving イベントを発生させます。

Reload()

永続ストレージからアプリケーション設定プロパティ値を更新します。

Reset()

保持されているアプリケーション設定値を対応する既定のプロパティに復元します。

Save()

アプリケーション設定プロパティの現在の値を格納します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
Upgrade()

アプリケーション設定を更新して、アプリケーションの最新のインストールを反映します。

イベント

PropertyChanged

アプリケーション設定プロパティの値が変更された後に発生します。

SettingChanging

アプリケーション設定プロパティの値が変更される前に発生します。

SettingsLoaded

アプリケーション設定をストレージから取得した後に発生します。

SettingsSaving

データ ストアに値が保存される前に発生します。

適用対象

製品 バージョン
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

こちらもご覧ください