ApplicationSettingsBase Osztály

Definíció

Alaposztályként szolgál a konkrét burkolóosztályok származtatásához az alkalmazásbeállítások funkció megvalósításához a Window Forms-alkalmazásokban.

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
Öröklődés
ApplicationSettingsBase
Megvalósítás

Példák

Az alábbi kódpéldában az alkalmazásbeállítások a fő űrlap alábbi attribútumainak megőrzésére használhatók: hely, méret, háttérszín és címsorszöveg. Ezek az attribútumok egyetlen alkalmazásbeállítás-tulajdonságként vannak megőrzve az FormSettings osztályban, elnevezve FormLocationFormSizeFormBackColor, és FormText, illetve. Kivéve az FormTextSize űrlaptulajdonságokhoz kötött adatokat, és azokat az alapértelmezett beállítási értékkel kell alkalmazni a használatával DefaultSettingValueAttribute.

Az űrlap négy gyermekvezérlőt tartalmaz, amelyek neve és függvényei a következők:

  • A btnBackColor párbeszédpanel megjelenítéséhez használt gomb.

  • Az alkalmazásbeállításokhoz btnReload használt gombReload.

  • Az alkalmazásbeállításokhoz btnReset használt gombReset.

  • A program állapotadatainak megjelenítésére szolgáló szövegmező tbStatus .

Figyelje meg, hogy az alkalmazás minden végrehajtása után egy további pont karakter van hozzáfűzve az űrlap címszövegéhez.

Ebben a kód példában egy elnevezett osztályt ColorDialog tartalmazó űrlapra és egy colorDialog1StatusStrip elnevezett ToolStripStatusLabelvezérlőelemre van tbStatusszükség. Emellett háromButton, névvel ellátott btnReloadbtnResetobjektumot is btnBackColorigényel.


#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
Imports System.Windows.Forms
Imports System.Drawing

Public Class Form1

    Public Shared Sub Main()

    End Sub

    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)
        DataBindings.Add(bndBackColor)
        Dim bndLocation As New Binding("Location", frmSettings1, "FormLocation",
                True, DataSourceUpdateMode.OnPropertyChanged)
        DataBindings.Add(bndLocation)

        ' Assign Size property, since databinding to Size doesn't work well.
        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
            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 = Text + "."c

        ' Save size settings manually.
        frmSettings1.FormSize = Size

        frmSettings1.Save()
    End Sub

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

    Private Sub btnReset_Click(ByVal sender As Object, ByVal e As EventArgs) _
            Handles btnReset.Click
        frmSettings1.Reset()
        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 (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

Megjegyzések

ApplicationSettingsBase A webalapú alkalmazások által használt osztályhoz a SettingsBase következő funkciókat adja hozzá:

  • A származtatott, beállításburkoló osztály attribútumainak észlelése. ApplicationSettingsBase támogatja a burkolóosztály tulajdonságaihoz használt deklaratív modellt a későbbiekben leírtak szerint.

  • Magasabb szintű Save és Reload metódusok.

  • További érvényesítési események, amelyeket az egyes beállítások helyességének biztosítása érdekében kezelhet.

Az alkalmazásbeállítások architektúrájában a beállítástulajdonságok egy csoportjának eléréséhez konkrét burkolóosztályt kell származtatnia.ApplicationSettingsBase A burkolóosztály a következő módokon testre szabható ApplicationSettingsBase :

  • Ahhoz, hogy minden beállítástulajdonság elérhető legyen, a burkolóosztályhoz hozzá lesz adva egy megfelelő, erősen gépelt nyilvános tulajdonság. Ez a tulajdonság rendelkezik és get tartozékokkal rendelkezik set az olvasási/írási alkalmazások beállításaihoz, de csak az get írásvédett beállításokhoz.

  • A megfelelő attribútumokat a burkolóosztály nyilvános tulajdonságaira kell alkalmazni, hogy jelezzék a beállítástulajdonság jellemzőit, például a beállítás hatókörét (alkalmazást vagy felhasználót), hogy a beállítás támogatja-e a barangolást, a beállítás alapértelmezett értékét, a használni kívánt beállításszolgáltatót stb. Minden tulajdonságnak meg kell adnia a hatókörét, vagy ApplicationScopedSettingAttributeUserScopedSettingAttributea . Az alkalmazás hatókörébe tartozó beállítások írásvédettek, ha az alapértelmezett LocalFileSettingsProvider beállítás van használatban.

Az ApplicationSettingsBase osztály tükröződés használatával észleli ezeket az attribútumokat futásidőben. Ezen információk nagy része a beállítások szolgáltatói rétegének lesz átadva, amely a tárolásért, az adatmegőrzési formátumért és így tovább.

Ha egy alkalmazás több beállításburkoló osztálysal rendelkezik, minden osztály meghatároz egy beállításcsoportot. Minden csoport a következő jellemzőkkel rendelkezik:

  • A csoportok tetszőleges számú vagy típusú tulajdonságbeállítást tartalmazhatnak.

  • Ha a csoport nevét nem explicit módon állítja be a burkolóosztály és a SettingsGroupNameAttributehozzá tartozó dekorálás, akkor a rendszer automatikusan létrehoz egy nevet.

Alapértelmezés szerint az összes ügyfélalapú alkalmazás a tárterületet használja LocalFileSettingsProvider . Ha másik beállításszolgáltatóra van szükség, akkor a burkolóosztályt vagy tulajdonságot egy megfelelővel SettingsProviderAttributekell díszíteni.

További információ az alkalmazásbeállítások használatáról: Alkalmazási beállítások Windows Forms.

Konstruktorok

Name Description
ApplicationSettingsBase()

Inicializálja az osztály egy példányát az ApplicationSettingsBase alapértelmezett állapotba.

ApplicationSettingsBase(IComponent, String)

Inicializálja az osztály egy példányát a ApplicationSettingsBase megadott tulajdonosi összetevő és beállításkulcs használatával.

ApplicationSettingsBase(IComponent)

Inicializálja az ApplicationSettingsBase osztály egy példányát a megadott tulajdonosi összetevő használatával.

ApplicationSettingsBase(String)

Inicializálja az ApplicationSettingsBase osztály egy példányát a megadott beállításkulcs használatával.

Tulajdonságok

Name Description
Context

Lekéri a beállításcsoporthoz társított alkalmazásbeállítások környezetét.

IsSynchronized

Lekérdez egy értéket, amely jelzi, hogy az objektumhoz való hozzáférés szinkronizálva van-e (szálbiztos).

(Öröklődés forrása SettingsBase)
Item[String]

Lekéri vagy beállítja a megadott alkalmazásbeállítások tulajdonság értékét.

Properties

Lekéri a beállítástulajdonságok gyűjteményét a burkolóban.

PropertyValues

Lekéri a tulajdonságértékek gyűjteményét.

Providers

Lekéri a burkoló által használt alkalmazásbeállítások szolgáltatóinak gyűjteményét.

SettingsKey

Lekéri vagy beállítja az alkalmazásbeállítások csoportjának beállításkulcsát.

Metódusok

Name Description
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetPreviousVersion(String)

A névvel ellátott beállítások tulajdonság értékét adja vissza ugyanannak az alkalmazásnak az előző verziójához.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Inicializálja az objektum által SettingsBase használt belső tulajdonságokat.

(Öröklődés forrása SettingsBase)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
OnPropertyChanged(Object, PropertyChangedEventArgs)

Az eseményt emeli PropertyChanged ki.

OnSettingChanging(Object, SettingChangingEventArgs)

Az eseményt emeli SettingChanging ki.

OnSettingsLoaded(Object, SettingsLoadedEventArgs)

Az eseményt emeli SettingsLoaded ki.

OnSettingsSaving(Object, CancelEventArgs)

Az eseményt emeli SettingsSaving ki.

Reload()

Frissíti az alkalmazásbeállítások tulajdonságértékeit az állandó tárterületről.

Reset()

Visszaállítja a megőrzött alkalmazásbeállítások értékeit a megfelelő alapértelmezett tulajdonságokra.

Save()

Az alkalmazásbeállítások tulajdonságainak aktuális értékeit tárolja.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
Upgrade()

Frissíti az alkalmazás beállításait, hogy tükrözze az alkalmazás újabb telepítését.

esemény

Name Description
PropertyChanged

Az alkalmazásbeállítások tulajdonság értékének módosítása után következik be.

SettingChanging

Az alkalmazásbeállítások tulajdonság értékének módosítása előtt következik be.

SettingsLoaded

Az alkalmazásbeállítások tárolóból való lekérése után következik be.

SettingsSaving

Az értékek adattárba való mentése előtt történik.

A következőre érvényes:

Lásd még