Прочитать на английском

Поделиться через


ApplicationSettingsBase Класс

Определение

Действует, как базовый класс для извлечения конкретных классов-оболочек, чтобы реализовать функцию параметров приложения в приложениях Windows Forms.

public abstract class ApplicationSettingsBase : System.Configuration.SettingsBase, System.ComponentModel.INotifyPropertyChanged
Наследование
ApplicationSettingsBase
Реализации

Примеры

В следующем примере кода показано использование параметров приложения для сохранения следующих атрибутов формы main: расположение, размер, цвет фона и текст строки заголовка. Все эти атрибуты сохраняются в виде отдельных свойств параметров приложения в FormSettings классе с именами FormLocation, FormSizeFormBackColor и FormTextсоответственно. Все, кроме FormText и Size , являются данными, привязанными к связанным свойствам формы и имеют значение по умолчанию, применяемое с помощью DefaultSettingValueAttribute.

Форма содержит четыре дочерних элемента управления со следующими именами и функциями:

  • Кнопка с именем btnBackColor , используемая для отображения диалогового окна "Общий цвет ".

  • Кнопка с именем btnReload , используемая для Reload параметров приложения.

  • Кнопка с именем btnReset , используемая для Reset параметров приложения.

  • Текстовое поле с именем tbStatus , используемое для отображения сведений о состоянии программы.

Обратите внимание, что после каждого выполнения приложения к тексту заголовка формы добавляется дополнительный символ точки.

В этом примере кода требуется form с классом ColorDialog с именем colorDialog1и элемент управления StatusStrip с ToolStripStatusLabel именем tbStatus. Кроме того, требуется три Button объекта с именами btnReload, btnResetи btnBackColor.

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; }
    }
}

Комментарии

ApplicationSettingsBase добавляет следующие функциональные возможности в SettingsBase класс , который используется веб-приложениями:

  • Возможность обнаружения атрибутов в производном классе-оболочке settings. ApplicationSettingsBase поддерживает декларативную модель, используемую для свойств класса-оболочки, как описано далее.

  • Методы и Reload более высокого уровняSave.

  • Дополнительные события проверки, которые можно обрабатывать для обеспечения правильности отдельных параметров.

В архитектуре параметров приложения для доступа к группе свойств параметров необходимо создать конкретный класс-оболочку из ApplicationSettingsBase. Класс-оболочка настраивается ApplicationSettingsBase следующим образом:

  • Для каждого свойства settings, доступ к который требуется получить, в класс-оболочку добавляется соответствующее строго типизированное открытое свойство. Это свойство имеет get методы доступа и set для параметров приложения для чтения и записи, но только get метод доступа для параметров только для чтения.

  • Соответствующие атрибуты должны применяться к открытым свойствам класса-оболочки, чтобы указать характеристики свойства параметров, такие как область параметра (приложение или пользователь), должен ли параметр поддерживать перемещение, значение по умолчанию для параметра, используемый поставщик параметров и т. д. Каждое свойство требуется для указания область с помощью ApplicationScopedSettingAttribute или UserScopedSettingAttribute. Параметры области приложения доступны только для чтения, если используется значение по умолчанию LocalFileSettingsProvider .

Класс ApplicationSettingsBase использует отражение для обнаружения этих атрибутов во время выполнения. Большая часть этих сведений передается на уровень поставщика параметров, который отвечает за хранение, формат сохраняемости и т. д.

Если приложение имеет несколько классов-оболочек параметров, каждый класс определяет группу параметров. Каждая группа имеет следующие характеристики:

  • Группа может содержать любое количество или тип параметров свойства.

  • Если имя группы не задано явным образом, декорируя класс-оболочку с помощью SettingsGroupNameAttribute, то имя создается автоматически.

По умолчанию все клиентские приложения используют для предоставления LocalFileSettingsProvider хранилища. Если требуется альтернативный поставщик параметров, класс-оболочка или свойство должны быть дополнены соответствующим SettingsProviderAttribute.

Дополнительные сведения об использовании параметров приложения см. в разделе Параметры приложения для Windows Forms.

Конструкторы

ApplicationSettingsBase()

Инициализирует экземпляр класса ApplicationSettingsBase в его состояние по умолчанию.

ApplicationSettingsBase(IComponent)

Инициализирует новый экземпляр класса ApplicationSettingsBase, используя предоставленный компонент владельца.

ApplicationSettingsBase(IComponent, String)

Инициализирует новый экземпляр класса ApplicationSettingsBase, используя предоставленный компонент владельца и ключ параметров.

ApplicationSettingsBase(String)

Инициализирует новый экземпляр класса ApplicationSettingsBase, используя предоставленный ключ параметров.

Свойства

Context

Возвращает контекст параметров приложения, связанный с группой параметров.

IsSynchronized

Возвращает значение, указывающее на то, является ли доступ к объекту синхронизированным (потокобезопасным).

(Унаследовано от SettingsBase)
Item[String]

Возвращает или задает значение указанного свойства параметров приложения.

Properties

Возвращает коллекцию свойств параметров в программе-оболочке.

PropertyValues

Возвращает коллекцию значений свойств.

Providers

Возвращает коллекцию поставщиков параметров приложения, используемую программой-оболочкой.

SettingsKey

Возвращает или задает ключ параметров для группы параметров приложения.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetPreviousVersion(String)

Возвращает значение именованного свойства параметров для предыдущей версии того же приложения.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Инициализирует внутренние свойства, используемые объектом SettingsBase.

(Унаследовано от SettingsBase)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
OnPropertyChanged(Object, PropertyChangedEventArgs)

Вызывает событие PropertyChanged.

OnSettingChanging(Object, SettingChangingEventArgs)

Вызывает событие SettingChanging.

OnSettingsLoaded(Object, SettingsLoadedEventArgs)

Вызывает событие SettingsLoaded.

OnSettingsSaving(Object, CancelEventArgs)

Вызывает событие SettingsSaving.

Reload()

Обновляет значения свойств параметров приложения из постоянного хранилища.

Reset()

Восстанавливает постоянные значения параметров приложения в их соответствующие свойства по умолчанию.

Save()

Сохраняет текущие значения свойств параметров приложения.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
Upgrade()

Обновляет параметры приложения в соответствии с последней установкой приложения.

События

PropertyChanged

Возникает после изменения свойства параметров приложения.

SettingChanging

Возникает перед изменением значения свойства параметров приложения.

SettingsLoaded

Возникает после извлечения параметров приложения из хранилища.

SettingsSaving

Возникает перед сохранением значений в хранилище данных.

Применяется к

См. также раздел