System.Configuration.ApplicationSettingsBase 类

方法描述

作为派生具体包装类以实现 Window 窗体应用程序中的应用程序设置功能的基类。

语法定义(C# System.Configuration.ApplicationSettingsBase 类 的用法)

public abstract class ApplicationSettingsBase : SettingsBase, 
	INotifyPropertyChanged

构造函数

构造函数名称 构造函数描述
ApplicationSettingsBase() 将 ApplicationSettingsBase 类的实例初始化为其默认状态。
ApplicationSettingsBase(IComponent) 使用提供的所有者组件初始化 ApplicationSettingsBase 类的实例。
ApplicationSettingsBase(String) 使用提供的设置键初始化 ApplicationSettingsBase 类的实例。
ApplicationSettingsBase(IComponent, String) 使用提供的所有者组件和设置键初始化 ApplicationSettingsBase 类的实例。

成员/方法

方法名称 方法描述
Equals(Object) 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
GetPreviousVersion 返回同一应用程序的早期版本的命名设置属性的值。
GetType 获取当前实例的 Type。 (继承自 Object。)
Initialize 初始化 SettingsBase 对象使用的内部属性。 (继承自 SettingsBase。)
MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
OnPropertyChanged 引发 PropertyChanged 事件。
OnSettingChanging 引发 SettingChanging 事件。
OnSettingsLoaded 引发 SettingsLoaded 事件。
OnSettingsSaving 引发 SettingsSaving 事件。
Reload 从永久存储刷新应用程序设置属性值。
Reset 将保持的应用程序设置值还原为其对应的默认属性。
Save 存储应用程序设置属性的当前值。 (重写 SettingsBase.Save()。)
ToString 返回表示当前对象的字符串。 (继承自 Object。)
Upgrade 更新应用程序设置,以反映最近安装的应用程序。

提示和注释

ApplicationSettingsBase 将以下功能添加到由基于 Web 的应用程序使用的 SettingsBase 类中:

能够检测有关派生的设置包装类的特性。 ApplicationSettingsBase 支持用于包装类属性的声明性模型,如下文所述。

高级 Save 和 Reload 方法。

可以为确保各项设置的正确性而处理的其他验证事件。

若要在应用程序设置结构中访问一组设置属性,则需要从 ApplicationSettingsBase 中派生具体的包装类。 包装类采用以下方式自定义 ApplicationSettingsBase:

对于要访问的每个设置属性,会将对应的强类型公共属性添加到包装类中。 此属性具有与读/写应用程序设置对应的 get 和 set 访问器,但对于只读设置只有一个 get 访问器。

相应的特性应用于包装类的公共属性,以指示设置属性的特征,如设置的范围(应用程序或用户)、设置是否应该支持漫游、设置的默认值、要使用的设置提供程序等等。 需要使用 ApplicationScopedSettingAttribute 或 UserScopedSettingAttribute 为每个属性指定范围。 如果使用默认的 LocalFileSettingsProvider,则应用程序范围设置为只读设置。

ApplicationSettingsBase 类在运行时使用反射来检测这些特性。 大多数信息被传递到设置提供程序层,该层负责存储、持久性格式等。

如果应用程序包含多个设置包装类,则每个类都将定义一个“设置组”。 每个组都具有以下特性:

组可以包含任意数量或类型的属性设置。

如果未使用 SettingsGroupNameAttribute 修饰包装类显式地设置组名,则将自动生成一个名称。

默认情况下,所有基于客户端的应用程序都将使用 LocalFileSettingsProvider 提供存储。 如果需要备用设置提供程序,则必须使用相应的 SettingsProviderAttribute 修饰包装类或属性。

有关使用应用程序设置的更多信息,请参见 Windows 窗体的应用程序设置。

System.Configuration.ApplicationSettingsBase 类例子

此外,还需要三个 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; }
       }

   }

继承层次结构

System.Object

System.Configuration.SettingsBase

System.Configuration.ApplicationSettingsBase

命名空间

namespace: System.Configuration

程序集: System(在 System.dll 中)

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。