Sdílet prostřednictvím


ApplicationSettingsBase Třída

Definice

Funguje jako základní třída pro odvození betonových tříd obálky k implementaci funkce nastavení aplikace v aplikacích Windows 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
Dědičnost
ApplicationSettingsBase
Implementuje

Příklady

Následující příklad kódu ukazuje použití nastavení aplikace k zachování následujících atributů hlavního formuláře: umístění, velikost, barva pozadí a text záhlaví. Všechny tyto atributy se uchovávají jako vlastnosti nastavení jedné aplikace ve FormSettings třídě s názvem FormLocation, FormSizeFormBackColor a FormText. Všechny kromě FormText a Size jsou data svázaná s přidruženými vlastnostmi formuláře a mají výchozí hodnotu nastavení použitou pomocí DefaultSettingValueAttribute.

Formulář obsahuje čtyři podřízené ovládací prvky, které mají následující názvy a funkce:

  • Tlačítko s názvem btnBackColor , které slouží k zobrazení společného dialogového okna Barva .

  • Tlačítko s názvem použité btnReload k Reload nastavení aplikace.

  • Tlačítko s názvem použité btnReset k Reset nastavení aplikace.

  • Textové pole s názvem tbStatus , které slouží k zobrazení informací o stavu programu.

Všimněte si, že po každém spuštění aplikace se k textu nadpisu formuláře připojí další znak tečky.

Tento příklad kódu vyžaduje Form s ColorDialog třídou s názvem colorDialog1a ovládacím StatusStrip prvku s ToolStripStatusLabel názvem tbStatus. Kromě toho vyžaduje tři Button objekty s názvem btnReload, btnReseta 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

Poznámky

ApplicationSettingsBase přidává do SettingsBase třídy následující funkce, které jsou používány webovými aplikacemi:

  • Schopnost rozpoznat atributy v odvozené třídě obálky nastavení. ApplicationSettingsBase podporuje deklarativní model používaný pro vlastnosti třídy obálky, jak je popsáno dále.

  • Vyšší úroveň Save a Reload metody.

  • Další události ověřování, které můžete zpracovat, abyste zajistili správnost jednotlivých nastavení.

Pokud chcete v architektuře nastavení aplikace získat přístup ke skupině vlastností nastavení, musíte odvodit konkrétní třídu obálky z ApplicationSettingsBase. Třída obálky ApplicationSettingsBase se přizpůsobí následujícími způsoby:

  • Pro každou vlastnost nastavení, ke které se má přistupovat, je do třídy obálky přidána odpovídající veřejná vlastnost silného typu. Tato vlastnost má get přístupové objekty a set pro nastavení aplikace pro čtení a zápis, ale pouze přístup pro get nastavení jen pro čtení.

  • Odpovídající atributy musí být použity na veřejné vlastnosti třídy obálky, aby bylo možné určit charakteristiky vlastnosti nastavení, jako je například obor nastavení (aplikace nebo uživatel), zda má nastavení podporovat roaming, výchozí hodnota pro nastavení, zprostředkovatele nastavení, které se má použít atd. Každá vlastnost je nutná k určení rozsahu pomocí nebo ApplicationScopedSettingAttributeUserScopedSettingAttribute. Nastavení v oboru aplikace jsou jen pro čtení, pokud se použije výchozí nastavení LocalFileSettingsProvider .

Třída ApplicationSettingsBase používá reflexi k detekci těchto atributů za běhu. Většina těchto informací se předá vrstvě zprostředkovatele nastavení, která je zodpovědná za úložiště, formát trvalosti atd.

Pokud má aplikace více tříd obálky nastavení, každá třída definuje skupinu nastavení. Každá skupina má následující vlastnosti:

  • Skupina může obsahovat libovolný počet nebo typ nastavení vlastností.

  • Pokud název skupiny není explicitně nastaven dekorací obálky třídy , SettingsGroupNameAttributepak se název vygeneruje automaticky.

Ve výchozím nastavení všechny klientské aplikace používají LocalFileSettingsProvider k poskytování úložiště . Pokud je požadován alternativní zprostředkovatel nastavení, musí být třída obálky nebo vlastnost opatřena odpovídajícím SettingsProviderAttributeobjektem .

Další informace o používání nastavení aplikace najdete v tématu Nastavení aplikace pro model Windows Forms.

Konstruktory

ApplicationSettingsBase()

Inicializuje instanci třídy do výchozího ApplicationSettingsBase stavu.

ApplicationSettingsBase(IComponent)

Inicializuje instanci ApplicationSettingsBase třídy pomocí zadané komponenty vlastníka.

ApplicationSettingsBase(IComponent, String)

Inicializuje instanci ApplicationSettingsBase třídy pomocí zadané součásti vlastníka a klíče nastavení.

ApplicationSettingsBase(String)

Inicializuje instanci ApplicationSettingsBase třídy pomocí zadaného klíče nastavení.

Vlastnosti

Context

Získá kontext nastavení aplikace přidružené ke skupině nastavení.

IsSynchronized

Získá hodnotu označující, zda přístup k objektu je synchronizován (bezpečné z více vláken).

(Zděděno od SettingsBase)
Item[String]

Získá nebo nastaví hodnotu zadané vlastnosti nastavení aplikace.

Properties

Získá kolekci vlastností nastavení v obálek.

PropertyValues

Získá kolekci hodnot vlastností.

Providers

Získá kolekci zprostředkovatelů nastavení aplikace používané obálkou.

SettingsKey

Získá nebo nastaví klíč nastavení pro skupinu nastavení aplikace.

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetPreviousVersion(String)

Vrátí hodnotu vlastnosti pojmenovaného nastavení pro předchozí verzi stejné aplikace.

GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Inicializuje interní vlastnosti používané objektem SettingsBase .

(Zděděno od SettingsBase)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnPropertyChanged(Object, PropertyChangedEventArgs)

PropertyChanged Vyvolá událost.

OnSettingChanging(Object, SettingChangingEventArgs)

SettingChanging Vyvolá událost.

OnSettingsLoaded(Object, SettingsLoadedEventArgs)

SettingsLoaded Vyvolá událost.

OnSettingsSaving(Object, CancelEventArgs)

SettingsSaving Vyvolá událost.

Reload()

Aktualizuje hodnoty vlastností nastavení aplikace z trvalého úložiště.

Reset()

Obnoví trvalé hodnoty nastavení aplikace do odpovídajících výchozích vlastností.

Save()

Ukládá aktuální hodnoty vlastností nastavení aplikace.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
Upgrade()

Aktualizace nastavení aplikace tak, aby odrážela novější instalaci aplikace.

Událost

PropertyChanged

Vyvolá se po změně hodnoty vlastnosti nastavení aplikace.

SettingChanging

Nastane před změnou hodnoty vlastnosti nastavení aplikace.

SettingsLoaded

Vyvolá se po načtení nastavení aplikace z úložiště.

SettingsSaving

Nastane před uložením hodnot do úložiště dat.

Platí pro

Viz také