ApplicationSettingsBase Sınıf

Tanım

Windows Forms uygulamalarında uygulama ayarları özelliğini uygulamak üzere somut sarmalayıcı sınıflarını türetmek için temel sınıf görevi görür.

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
Devralma
ApplicationSettingsBase
Uygulamalar

Örnekler

Aşağıdaki kod örneği, ana formun şu özniteliklerini kalıcı hale getirmek için uygulama ayarlarının kullanımını gösterir: konum, boyut, arka plan rengi ve başlık çubuğu metni. Bu özniteliklerin tümü, sınıfında sırasıyla , FormBackColorFormSizeve FormTextadlı FormLocationtek uygulama ayarları özellikleri FormSettings olarak kalıcıdır. ve Size dışındaki FormText tüm veriler ilişkili form özelliklerine bağlıdır ve kullanılarak DefaultSettingValueAttributevarsayılan bir ayar değeri uygulanır.

Form, aşağıdaki adlara ve işlevlere sahip dört alt denetim içerir:

  • Ortak renk iletişim kutusunu görüntülemek için kullanılan adlı btnBackColor düğme.

  • Uygulama ayarlarında kullanılan Reload adlı btnReload bir düğme.

  • Uygulama ayarlarında kullanılan Reset adlı btnReset bir düğme.

  • Program hakkındaki durum bilgilerini görüntülemek için kullanılan adlı tbStatus metin kutusu.

Uygulamanın her yürütülmesinden sonra, formun başlık metnine ek bir nokta karakteri eklendiğine dikkat edin.

Bu kod örneği, adlı sınıfa sahip bir ColorDialog Form ve adlı colorDialog1tbStatusbir StatusStrip denetim ToolStripStatusLabel gerektirir. Ayrıca, , btnResetve btnBackColoradlı btnReloadüç Button nesne gerektirir.


#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

Açıklamalar

ApplicationSettingsBase , Web tabanlı uygulamalar tarafından kullanılan sınıfına SettingsBase aşağıdaki işlevselliği ekler:

  • Türetilmiş bir ayar sarmalayıcı sınıfındaki öznitelikleri algılama özelliği. ApplicationSettingsBase daha sonra açıklandığı gibi sarmalayıcı sınıfı özellikleri için kullanılan bildirim temelli modeli destekler.

  • Üst düzey Save ve Reload yöntemler.

  • Tek tek ayarların doğruluğunu sağlamak için işleyebileceğiniz ek doğrulama olayları.

Uygulama ayarları mimarisinde, bir grup ayar özelliğine erişmek için öğesinden ApplicationSettingsBasesomut bir sarmalayıcı sınıfı türetmelisiniz. Sarmalayıcı sınıfı aşağıdaki yollarla özelleştirilir ApplicationSettingsBase :

  • Erişilecek her ayarlar özelliği için, sarmalayıcı sınıfına karşılık gelen kesin türü belirlenmiş bir ortak özellik eklenir. Bu özelliğin okuma/yazma uygulama ayarları için ve set erişimcileri vardırget, ancak yalnızca salt okunur ayarlar için bir get erişimci vardır.

  • Ayar kapsamının (uygulama veya kullanıcı), ayarın dolaşımı desteklemesi gerekip gerekmediği, ayarın varsayılan değeri, kullanılacak ayar sağlayıcısı gibi ayarlar özelliğinin özelliklerini göstermek için sarmalayıcı sınıfının genel özelliklerine uygun öznitelikler uygulanmalıdır. Her özellik, veya UserScopedSettingAttributekullanarak ApplicationScopedSettingAttribute kapsamını belirtmek için gereklidir. Varsayılan LocalFileSettingsProvider kullanılırsa uygulama kapsamlı ayarlar salt okunurdur.

sınıfı, ApplicationSettingsBase çalışma zamanında bu öznitelikleri algılamak için yansıma kullanır. Bu bilgilerin çoğu depolama, kalıcılık biçimi vb. sorumlu olan ayarlar sağlayıcısı katmanına geçirilir.

Bir uygulamanın birden çok ayar sarmalayıcı sınıfı olduğunda, her sınıf bir ayarlar grubu tanımlar. Her grup aşağıdaki özelliklere sahiptir:

  • Bir grup, herhangi bir sayıda veya türde özellik ayarı içerebilir.

  • Grup adı, sarmalayıcı sınıfını ile SettingsGroupNameAttributesüsleyerek açıkça ayarlanmazsa, otomatik olarak bir ad oluşturulur.

Varsayılan olarak, tüm istemci tabanlı uygulamalar depolama sağlamak için kullanır LocalFileSettingsProvider . Alternatif bir ayar sağlayıcısı isteniyorsa, sarmalayıcı sınıfı veya özelliği karşılık gelen SettingsProviderAttributeile donatılmalıdır.

Uygulama ayarlarını kullanma hakkında daha fazla bilgi için bkz. Windows Forms için Uygulama Ayarları.

Oluşturucular

ApplicationSettingsBase()

Sınıfın bir örneğini ApplicationSettingsBase varsayılan durumuna başlatır.

ApplicationSettingsBase(IComponent)

Sağlanan sahip bileşenini kullanarak sınıfının bir örneğini ApplicationSettingsBase başlatır.

ApplicationSettingsBase(IComponent, String)

Sağlanan sahip bileşeni ve ayarlar anahtarını kullanarak sınıfın bir örneğini ApplicationSettingsBase başlatır.

ApplicationSettingsBase(String)

Sağlanan ayarlar anahtarını kullanarak sınıfın ApplicationSettingsBase bir örneğini başlatır.

Özellikler

Context

Ayarlar grubuyla ilişkili uygulama ayarları bağlamını alır.

IsSynchronized

Nesneye erişimin eşitlenip eşitlenmediğini belirten bir değer alır (iş parçacığı güvenli).

(Devralındığı yer: SettingsBase)
Item[String]

Belirtilen uygulama ayarları özelliğinin değerini alır veya ayarlar.

Properties

Sarmalayıcıdaki ayar özellikleri koleksiyonunu alır.

PropertyValues

Özellik değerleri koleksiyonunu alır.

Providers

Sarmalayıcı tarafından kullanılan uygulama ayarları sağlayıcıları koleksiyonunu alır.

SettingsKey

Uygulama ayarları grubu için ayarlar anahtarını alır veya ayarlar.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetPreviousVersion(String)

Aynı uygulamanın önceki sürümü için adlandırılmış ayarlar özelliğinin değerini döndürür.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Nesne tarafından SettingsBase kullanılan iç özellikleri başlatır.

(Devralındığı yer: SettingsBase)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OnPropertyChanged(Object, PropertyChangedEventArgs)

Olayı tetikler PropertyChanged .

OnSettingChanging(Object, SettingChangingEventArgs)

Olayı tetikler SettingChanging .

OnSettingsLoaded(Object, SettingsLoadedEventArgs)

Olayı tetikler SettingsLoaded .

OnSettingsSaving(Object, CancelEventArgs)

Olayı tetikler SettingsSaving .

Reload()

Uygulama ayarları özellik değerlerini kalıcı depolamadan yeniler.

Reset()

Kalıcı uygulama ayarları değerlerini karşılık gelen varsayılan özelliklerine geri yükler.

Save()

Uygulama ayarları özelliklerinin geçerli değerlerini depolar.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)
Upgrade()

Uygulama ayarlarını uygulamanın daha yeni bir yüklemesini yansıtacak şekilde Güncelleştirmeler.

Ekinlikler

PropertyChanged

Bir uygulama ayarları özelliğinin değeri değiştirildikten sonra gerçekleşir.

SettingChanging

Bir uygulama ayarları özelliğinin değeri değiştirilmeden önce gerçekleşir.

SettingsLoaded

Uygulama ayarları depolama alanından alındıktan sonra gerçekleşir.

SettingsSaving

Değerler veri deposuna kaydedilmeden önce gerçekleşir.

Şunlara uygulanır

Ayrıca bkz.