ApplicationSettingsBase Klass

Definition

Fungerar som en basklass för att härleda betongomslutningsklasser för att implementera funktionen programinställningar i Windows Forms-program.

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
Arv
ApplicationSettingsBase
Implementeringar

Exempel

Följande kodexempel visar hur programinställningarna används för att bevara följande attribut i huvudformuläret: plats, storlek, bakgrundsfärg och rubrikfältstext. Alla dessa attribut sparas som egenskaper för enskilda programinställningar i FormSettings klassen med namnet FormLocation, FormSizeFormBackColor respektive FormText. Alla utom och FormTextSize är data som är bundna till deras associerade formuläregenskaper och har ett standardinställningsvärde som används med hjälp av DefaultSettingValueAttribute.

Formuläret innehåller fyra underordnade kontroller som har följande namn och funktioner:

  • En knapp med namnet btnBackColor som används för att visa den vanliga dialogrutan Färg .

  • En knapp med namnet btnReload används för Reload programinställningarna.

  • En knapp med namnet btnReset används för Reset programinställningarna.

  • En textruta med namnet tbStatus används för att visa statusinformation om programmet.

Observera att efter varje körning av programmet läggs ytterligare ett periodtecken till i rubriktexten i formuläret.

Det här kodexemplet kräver ett formulär med en ColorDialog klass med namnet colorDialog1, och en StatusStrip kontroll med ToolStripStatusLabel namnet tbStatus. Dessutom krävs tre Button objekt med namnet btnReload, btnResetoch 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
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

Kommentarer

ApplicationSettingsBase lägger till följande funktioner i SettingsBase klassen, som används av webbaserade program:

  • Möjligheten att identifiera attribut på en härledd inställningsomslutningsklass. ApplicationSettingsBase stöder den deklarativa modell som används för egenskaper för omslutningsklass, enligt beskrivningen senare.

  • Högre nivå Save och Reload metoder.

  • Ytterligare valideringshändelser som du kan hantera för att säkerställa att enskilda inställningar är korrekta.

För att få åtkomst till en grupp med inställningsegenskaper i programinställningsarkitekturen måste du härleda en betongomslutningsklass från ApplicationSettingsBase. Omslutningsklassen ApplicationSettingsBase anpassar sig på följande sätt:

  • För varje inställningsegenskap som ska nås läggs en motsvarande starkt typad offentlig egenskap till i omslutningsklassen. Den här egenskapen har get och set åtkomst till skrivskyddade programinställningar, men endast en get åtkomst för skrivskyddade inställningar.

  • Lämpliga attribut måste tillämpas på omslutningsklassens offentliga egenskaper för att ange egenskaper för inställningsegenskapen, till exempel inställningens omfång (program eller användare), om inställningen ska ha stöd för roaming, standardvärdet för inställningen, inställningsprovidern som ska användas och så vidare. Varje egenskap krävs för att ange dess omfång med hjälp av antingen ApplicationScopedSettingAttribute eller UserScopedSettingAttribute. Inställningar med programomfattning är skrivskyddade om standardinställningen LocalFileSettingsProvider används.

Klassen ApplicationSettingsBase använder reflektion för att identifiera dessa attribut vid körning. Merparten av den här informationen skickas till inställningsproviderlagret, som ansvarar för lagring, beständighetsformat och så vidare.

När ett program har flera inställningshanteringsklasser definierar varje klass en inställningsgrupp. Varje grupp har följande egenskaper:

  • En grupp kan innehålla valfritt antal eller typ av egenskapsinställningar.

  • Om gruppnamnet inte uttryckligen anges av omslutningsklassen med en SettingsGroupNameAttributegenereras automatiskt ett namn.

Som standard använder LocalFileSettingsProvider alla klientbaserade program för att tillhandahålla lagring. Om en alternativ inställningsprovider önskas måste omslutningsklassen eller egenskapen dekoreras med motsvarande SettingsProviderAttribute.

Mer information om hur du använder programinställningar finns i Programinställningar för Windows Forms.

Konstruktorer

Name Description
ApplicationSettingsBase()

Initierar en instans av ApplicationSettingsBase klassen till dess standardtillstånd.

ApplicationSettingsBase(IComponent, String)

Initierar en instans av klassen med hjälp av ApplicationSettingsBase den angivna ägarkomponenten och inställningsnyckeln.

ApplicationSettingsBase(IComponent)

Initierar en instans av klassen med hjälp av ApplicationSettingsBase den angivna ägarkomponenten.

ApplicationSettingsBase(String)

Initierar en instans av klassen med hjälp av ApplicationSettingsBase den angivna inställningsnyckeln.

Egenskaper

Name Description
Context

Hämtar kontexten för programinställningar som är associerad med inställningsgruppen.

IsSynchronized

Hämtar ett värde som anger om åtkomsten till objektet synkroniseras (trådsäker).

(Ärvd från SettingsBase)
Item[String]

Hämtar eller anger värdet för den angivna egenskapen för programinställningar.

Properties

Hämtar samlingen med inställningsegenskaper i omslutningen.

PropertyValues

Hämtar en samling egenskapsvärden.

Providers

Hämtar samlingen med programinställningar som används av omslutningen.

SettingsKey

Hämtar eller anger inställningsnyckeln för programinställningsgruppen.

Metoder

Name Description
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetPreviousVersion(String)

Returnerar värdet för egenskapen namngivna inställningar för den tidigare versionen av samma program.

GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Initierar interna egenskaper som används av SettingsBase objektet.

(Ärvd från SettingsBase)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnPropertyChanged(Object, PropertyChangedEventArgs)

Genererar händelsen PropertyChanged .

OnSettingChanging(Object, SettingChangingEventArgs)

Genererar händelsen SettingChanging .

OnSettingsLoaded(Object, SettingsLoadedEventArgs)

Genererar händelsen SettingsLoaded .

OnSettingsSaving(Object, CancelEventArgs)

Genererar händelsen SettingsSaving .

Reload()

Uppdaterar egenskapsvärdena för programinställningar från beständig lagring.

Reset()

Återställer de beständiga värdena för programinställningar till motsvarande standardegenskaper.

Save()

Lagrar de aktuella värdena för egenskaperna för programinställningar.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
Upgrade()

Uppdaterar programinställningarna så att de återspeglar en senare installation av programmet.

Händelser

Name Description
PropertyChanged

Inträffar när värdet för en egenskap för programinställningar har ändrats.

SettingChanging

Inträffar innan värdet för en egenskap för programinställningar ändras.

SettingsLoaded

Inträffar när programinställningarna har hämtats från lagringen.

SettingsSaving

Inträffar innan värden sparas i datalagret.

Gäller för

Se även