ApplicationSettingsBase Kelas

Definisi

Bertindak sebagai kelas dasar untuk mendapatkan kelas pembungkus beton untuk mengimplementasikan fitur pengaturan aplikasi di aplikasi Window Forms.

public ref class ApplicationSettingsBase abstract : System::Configuration::SettingsBase, System::ComponentModel::INotifyPropertyChanged
public abstract class ApplicationSettingsBase : System.Configuration.SettingsBase, System.ComponentModel.INotifyPropertyChanged
type ApplicationSettingsBase = class
    inherit SettingsBase
    interface INotifyPropertyChanged
Public MustInherit Class ApplicationSettingsBase
Inherits SettingsBase
Implements INotifyPropertyChanged
Warisan
ApplicationSettingsBase
Penerapan

Contoh

Contoh kode berikut menunjukkan penggunaan pengaturan aplikasi untuk mempertahankan atribut berikut dari formulir utama: lokasi, ukuran, warna latar belakang, dan teks bilah judul. Semua atribut ini dipertahankan sebagai properti pengaturan aplikasi tunggal di FormSettings kelas , masing-masing bernama FormLocation, FormSize, FormBackColor dan FormText. Semua kecuali FormText dan Size adalah data yang terikat ke properti formulir terkait dan memiliki nilai pengaturan default yang diterapkan menggunakan DefaultSettingValueAttribute.

Formulir berisi empat kontrol anak yang memiliki nama dan fungsi berikut:

  • Tombol bernama btnBackColor yang digunakan untuk menampilkan kotak dialog Warna umum.

  • Tombol bernama btnReload yang digunakan untuk Reload pengaturan aplikasi.

  • Tombol bernama btnReset yang digunakan untuk Reset pengaturan aplikasi.

  • Kotak teks bernama tbStatus yang digunakan untuk menampilkan informasi status tentang program.

Perhatikan bahwa setelah setiap eksekusi aplikasi, karakter periode tambahan ditambahkan ke teks judul formulir.

Contoh kode ini memerlukan Formulir dengan ColorDialog kelas bernama colorDialog1, dan StatusStrip kontrol dengan ToolStripStatusLabel bernama tbStatus. Selain itu, dibutuhkan tiga Button objek bernama btnReload, , btnResetdan btnBackColor.


#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::ComponentModel;
using namespace System::Drawing;
using namespace System::Configuration;
using namespace System::Windows::Forms;

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

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

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

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

    };

    ref class AppSettingsForm : Form
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
    private:
        System::ComponentModel::IContainer^ components;

        /// <summary>
        /// Clean up any resources being used. The Dispose(true) 
        /// pattern for embedded objects is implemented with this
        /// code that just contains a destructor 
        /// </summary>
    public:
        ~AppSettingsForm()
        {
            if (components != nullptr)
            {
                delete components;
            }
        }

#pragma region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
    private:
        void InitializeComponent()
        {
            this->components = nullptr;
            this->colorDialog = gcnew System::Windows::Forms::ColorDialog();
            this->backColorButton = gcnew System::Windows::Forms::Button();
            this->resetButton = gcnew System::Windows::Forms::Button();
            this->statusDisplay = gcnew System::Windows::Forms::TextBox();
            this->reloadButton = gcnew System::Windows::Forms::Button();
            this->SuspendLayout();
            //
            // backColorButton
            //
            this->backColorButton->Location = System::Drawing::Point(26, 24);
            this->backColorButton->Name = "backColorButton";
            this->backColorButton->Size = System::Drawing::Size(159, 23);
            this->backColorButton->TabIndex = 0;
            this->backColorButton->Text = "Change Background Color";
            this->backColorButton->Click += gcnew System::EventHandler
                (this,&AppSettingsForm::BackColorButton_Click);
            //
            // resetButton
            //
            this->resetButton->Location = System::Drawing::Point(26, 90);
            this->resetButton->Name = "resetButton";
            this->resetButton->Size = System::Drawing::Size(159, 23);
            this->resetButton->TabIndex = 1;
            this->resetButton->Text = "Reset to Defaults";
            this->resetButton->Click += gcnew System::EventHandler
                (this,&AppSettingsForm::ResetButton_Click);
            //
            // statusDisplay
            //
            this->statusDisplay->Location = System::Drawing::Point(26, 123);
            this->statusDisplay->Name = "statusDisplay";
            this->statusDisplay->Size = System::Drawing::Size(159, 20);
            this->statusDisplay->TabIndex = 2;
            //
            // reloadButton
            //
            this->reloadButton->Location = System::Drawing::Point(26, 57);
            this->reloadButton->Name = "reloadButton";
            this->reloadButton->Size = System::Drawing::Size(159, 23);
            this->reloadButton->TabIndex = 3;
            this->reloadButton->Text = "Reload from Storage";
            this->reloadButton->Click += gcnew System::EventHandler
                (this,&AppSettingsForm::ReloadButton_Click);
            //
            // AppSettingsForm
            //
            this->ClientSize = System::Drawing::Size(217, 166);
            this->Controls->Add(this->reloadButton);
            this->Controls->Add(this->statusDisplay);
            this->Controls->Add(this->resetButton);
            this->Controls->Add(this->backColorButton);
            this->Name = "AppSettingsForm";
            this->Text = "App Settings";
            this->FormClosing += gcnew
                System::Windows::Forms::FormClosingEventHandler
                (this,&AppSettingsForm::AppSettingsForm_FormClosing);
            this->Load += gcnew System::EventHandler(this,
                &AppSettingsForm::AppSettingsForm_Load);
            this->ResumeLayout(false);
            this->PerformLayout();

        }

#pragma endregion

    private:
        System::Windows::Forms::ColorDialog^ colorDialog;

        System::Windows::Forms::Button^ backColorButton;

        System::Windows::Forms::Button^ resetButton;

        System::Windows::Forms::TextBox^ statusDisplay;

        System::Windows::Forms::Button^ reloadButton;



        FormSettings ^ formSettings;

    public:
        AppSettingsForm()
        {
            formSettings = gcnew FormSettings;
            InitializeComponent();
        }

    private:
        void AppSettingsForm_Load(Object^ sender, EventArgs^ e)
        {
            //Associate settings property event handlers.
            formSettings->SettingChanging += gcnew SettingChangingEventHandler(
                this, &AppSettingsForm::FormSettings_SettingChanging);
            formSettings->SettingsSaving += gcnew SettingsSavingEventHandler(
                this,&AppSettingsForm::FormSettings_SettingsSaving);

            //Data bind settings properties with straightforward associations.
            Binding^ backColorBinding = gcnew Binding("BackColor", 
                formSettings, "FormBackColor", true, 
                DataSourceUpdateMode::OnPropertyChanged);
            this->DataBindings->Add(backColorBinding);
            Binding^ sizeBinding = gcnew Binding("Size", formSettings,
                "FormSize", true, DataSourceUpdateMode::OnPropertyChanged);
            this->DataBindings->Add(sizeBinding);
            Binding^ locationBinding = gcnew Binding("Location", formSettings,
                "FormLocation", true, DataSourceUpdateMode::OnPropertyChanged);
            this->DataBindings->Add(locationBinding);

            //For more complex associations, manually assign associations.
            String^ savedText = formSettings->FormText;
            //Since there is no default value for FormText.
            if (savedText != nullptr)
            {
                this->Text = savedText;
            }
        }

    private:
        void AppSettingsForm_FormClosing(Object^ sender,
            FormClosingEventArgs^ e)
        {
            //Synchronize manual associations first.
            formSettings->FormText = this->Text + '.';
            formSettings->Save();
        }

    private:
        void BackColorButton_Click(Object^ sender, EventArgs^ e)
        {
            if (::DialogResult::OK == colorDialog->ShowDialog())
            {
                Color color = colorDialog->Color;
                this->BackColor = color;
            }
        }

    private:
        void ResetButton_Click(Object^ sender, EventArgs^ e)
        {
            formSettings->Reset();
            this->BackColor = SystemColors::Control;
        }

    private:
        void ReloadButton_Click(Object^ sender, EventArgs^ e)
        {
            formSettings->Reload();
        }

    private:
        void FormSettings_SettingChanging(Object^ sender,
            SettingChangingEventArgs^ e)
        {
            statusDisplay->Text = e->SettingName + ": " + e->NewValue;
        }

    private:
        void FormSettings_SettingsSaving(Object^ sender,
            CancelEventArgs^ e)
        {
            //Should check for settings changes first.
            ::DialogResult^ dialogResult = MessageBox::Show(
                "Save current values for application settings?",
                "Save Settings", MessageBoxButtons::YesNo);
            if (::DialogResult::No == dialogResult)
            {
                e->Cancel = true;
            }
        }
    };
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; }
    }
}
Imports System.Configuration
Imports System.ComponentModel

Public Class Form1

    Private WithEvents frmSettings1 As New FormSettings

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
            Handles MyBase.Load
        'Settings property event handlers are associated through WithEvents 
        '  and Handles combination.

        'Data bind settings properties with straightforward associations.
        Dim bndBackColor As New Binding("BackColor", frmSettings1, "FormBackColor", _
                True, DataSourceUpdateMode.OnPropertyChanged)
        Me.DataBindings.Add(bndBackColor)
        Dim bndLocation As New Binding("Location", frmSettings1, "FormLocation", _
                True, DataSourceUpdateMode.OnPropertyChanged)
        Me.DataBindings.Add(bndLocation)

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

        'For more complex associations, manually assign associations.
        Dim savedText As String = frmSettings1.FormText
        'Since there is no default value for FormText.
        If (savedText IsNot Nothing) Then
            Me.Text = savedText
        End If
    End Sub

    Private Sub Form1_FormClosing_1(ByVal sender As Object, ByVal e As _
            FormClosingEventArgs) Handles MyBase.FormClosing
        'Synchronize manual associations first.
        frmSettings1.FormText = Me.Text + "."c

        ' Save size settings manually.
        frmSettings1.FormSize = Me.Size

        frmSettings1.Save()
    End Sub

    Private Sub btnBackColor_Click(ByVal sender As Object, ByVal e As EventArgs) _
            Handles btnBackColor.Click
        If System.Windows.Forms.DialogResult.OK = colorDialog1.ShowDialog() Then
            Dim c As Color = colorDialog1.Color
            Me.BackColor = c
        End If
    End Sub

    Private Sub btnReset_Click(ByVal sender As Object, ByVal e As EventArgs) _
            Handles btnReset.Click
        frmSettings1.Reset()
        Me.BackColor = SystemColors.Control
    End Sub

    Private Sub btnReload_Click(ByVal sender As Object, ByVal e As EventArgs) _
            Handles btnReload.Click
        frmSettings1.Reload()
    End Sub

    Private Sub frmSettings1_SettingChanging(ByVal sender As Object, ByVal e As _
            SettingChangingEventArgs) Handles frmSettings1.SettingChanging
        tbStatus.Text = e.SettingName & ": " & e.NewValue.ToString
    End Sub

    Private Sub frmSettings1_SettingsSaving(ByVal sender As Object, ByVal e As _
            CancelEventArgs) Handles frmSettings1.SettingsSaving
        'Should check for settings changes first.
        Dim dr As DialogResult = MessageBox.Show( _
            "Save current values for application settings?", "Save Settings", _
            MessageBoxButtons.YesNo)
        If (System.Windows.Forms.DialogResult.No = dr) Then
            e.Cancel = True
        End If
    End Sub
End Class

'Application settings wrapper class. This class defines the settings we intend to use in our application.
NotInheritable Class FormSettings
    Inherits ApplicationSettingsBase

    <UserScopedSettingAttribute()> _
    Public Property FormText() As String
        Get
            Return CStr(Me("FormText"))
        End Get
        Set(ByVal value As String)
            Me("FormText") = value
        End Set
    End Property

    <UserScopedSettingAttribute(), DefaultSettingValueAttribute("0, 0")> _
    Public Property FormLocation() As Point
        Get
            Return CType(Me("FormLocation"), Point)
        End Get
        Set(ByVal value As Point)
            Me("FormLocation") = value
        End Set
    End Property

    <UserScopedSettingAttribute(), DefaultSettingValueAttribute("225, 200")> _
    Public Property FormSize() As Size
        Get
            Return CType(Me("FormSize"), Size)
        End Get
        Set(ByVal value As Size)
            Me("FormSize") = value
        End Set
    End Property

    <UserScopedSettingAttribute(), DefaultSettingValueAttribute("LightGray")> _
    Public Property FormBackColor() As Color
        Get
            Return CType(Me("FormBackColor"), Color)
        End Get
        Set(ByVal value As Color)
            Me("FormBackColor") = value
        End Set
    End Property
End Class

Keterangan

ApplicationSettingsBase menambahkan fungsionalitas berikut ke SettingsBase kelas , yang digunakan oleh aplikasi berbasis Web:

  • Kemampuan untuk mendeteksi atribut pada kelas pembungkus pengaturan turunan. ApplicationSettingsBase mendukung model deklaratif yang digunakan untuk properti kelas pembungkus, seperti yang dijelaskan nanti.

  • Tingkat Save dan Reload metode yang lebih tinggi.

  • Peristiwa validasi tambahan yang dapat Anda tangani untuk memastikan kebenaran pengaturan individual.

Dalam arsitektur pengaturan aplikasi, untuk mengakses sekelompok properti pengaturan, Anda perlu memperoleh kelas pembungkus beton dari ApplicationSettingsBase. Kelas pembungkus ApplicationSettingsBase menyesuaikan dengan cara berikut:

  • Agar setiap properti pengaturan dapat diakses, properti publik yang diketik dengan kuat yang sesuai ditambahkan ke kelas pembungkus. Properti ini memiliki get dan set pengaktor untuk pengaturan aplikasi baca/tulis, tetapi hanya aksesor get untuk pengaturan baca-saja.

  • Atribut yang sesuai harus diterapkan ke properti publik kelas pembungkus untuk menunjukkan karakteristik properti pengaturan, seperti cakupan pengaturan (aplikasi atau pengguna), apakah pengaturan harus mendukung roaming, nilai default untuk pengaturan, penyedia pengaturan yang akan digunakan, dan sebagainya. Setiap properti diperlukan untuk menentukan cakupannya, menggunakan atau ApplicationScopedSettingAttributeUserScopedSettingAttribute. Pengaturan tercakup aplikasi bersifat baca-saja jika default LocalFileSettingsProvider digunakan.

Kelas ApplicationSettingsBase menggunakan refleksi untuk mendeteksi atribut ini pada durasi. Sebagian besar informasi ini diteruskan ke lapisan penyedia pengaturan, yang bertanggung jawab atas penyimpanan, format persistensi, dan sebagainya.

Ketika aplikasi memiliki beberapa kelas pembungkus pengaturan, setiap kelas menentukan grup pengaturan. Setiap grup memiliki karakteristik berikut:

  • Grup dapat berisi nomor atau jenis pengaturan properti apa pun.

  • Jika nama grup tidak diatur secara eksplisit dengan mendekorasi kelas pembungkus dengan SettingsGroupNameAttribute, maka nama akan dibuat secara otomatis.

Secara default, semua aplikasi berbasis klien menggunakan LocalFileSettingsProvider untuk menyediakan penyimpanan. Jika penyedia pengaturan alternatif diinginkan, maka kelas atau properti pembungkus harus dihiasi dengan yang sesuai SettingsProviderAttribute.

Untuk informasi selengkapnya tentang menggunakan pengaturan aplikasi, lihat Pengaturan Aplikasi untuk Formulir Windows.

Konstruktor

ApplicationSettingsBase()

Menginisialisasi instans kelas ke ApplicationSettingsBase status defaultnya.

ApplicationSettingsBase(IComponent)

Menginisialisasi instans ApplicationSettingsBase kelas menggunakan komponen pemilik yang disediakan.

ApplicationSettingsBase(IComponent, String)

Menginisialisasi instans ApplicationSettingsBase kelas menggunakan komponen pemilik dan kunci pengaturan yang disediakan.

ApplicationSettingsBase(String)

Menginisialisasi instans ApplicationSettingsBase kelas menggunakan kunci pengaturan yang disediakan.

Properti

Context

Mendapatkan konteks pengaturan aplikasi yang terkait dengan grup pengaturan.

IsSynchronized

Mendapatkan nilai yang menunjukkan apakah akses ke objek disinkronkan (utas aman).

(Diperoleh dari SettingsBase)
Item[String]

Mendapatkan atau menetapkan nilai properti pengaturan aplikasi yang ditentukan.

Properties

Mendapatkan kumpulan properti pengaturan di pembungkus.

PropertyValues

Mendapatkan kumpulan nilai properti.

Providers

Mendapatkan kumpulan penyedia pengaturan aplikasi yang digunakan oleh pembungkus.

SettingsKey

Mendapatkan atau mengatur kunci pengaturan untuk grup pengaturan aplikasi.

Metode

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetPreviousVersion(String)

Mengembalikan nilai properti pengaturan bernama untuk versi sebelumnya dari aplikasi yang sama.

GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Menginisialisasi properti internal yang digunakan oleh SettingsBase objek.

(Diperoleh dari SettingsBase)
MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
OnPropertyChanged(Object, PropertyChangedEventArgs)

Memunculkan kejadian PropertyChanged.

OnSettingChanging(Object, SettingChangingEventArgs)

Memunculkan kejadian SettingChanging.

OnSettingsLoaded(Object, SettingsLoadedEventArgs)

Memunculkan kejadian SettingsLoaded.

OnSettingsSaving(Object, CancelEventArgs)

Memunculkan kejadian SettingsSaving.

Reload()

Merefresh nilai properti pengaturan aplikasi dari penyimpanan persisten.

Reset()

Memulihkan nilai pengaturan aplikasi yang dipertahankan ke properti default yang sesuai.

Save()

Menyimpan nilai properti pengaturan aplikasi saat ini.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
Upgrade()

Updates pengaturan aplikasi untuk mencerminkan penginstalan aplikasi yang lebih baru.

Acara

PropertyChanged

Terjadi setelah nilai properti pengaturan aplikasi diubah.

SettingChanging

Terjadi sebelum nilai properti pengaturan aplikasi diubah.

SettingsLoaded

Terjadi setelah pengaturan aplikasi diambil dari penyimpanan.

SettingsSaving

Terjadi sebelum nilai disimpan ke penyimpanan data.

Berlaku untuk

Lihat juga