如何:创建应用程序设置

使用托管代码,可以创建新应用程序设置并将它们绑定到窗体上的属性或窗体的控件上的属性,以便在运行时自动加载和保存这些设置。

在下面的过程中,您将手动创建一个派生自 ApplicationSettingsBase 的包装类。 然后为每个要公开的应用程序设置,向此类添加一个公共可访问属性。

您也可以在 Visual Studio 设计器中使用尽可能少的代码执行此过程。 有关更多信息,请参见 如何:使用设计器创建应用程序设置如何:使用设计器创建应用程序设置如何:使用设计器创建应用程序设置如何:使用设计器创建应用程序设置如何:使用设计器创建应用程序设置.

以编程方式创建新的应用程序设置

  1. 向项目中添加一个新类,然后重命名它。 在下面的过程中,我们将此类称为 MyUserSettings。 更改该类的定义,以便该类从 ApplicationSettingsBase 派生。

  2. 在此包装类上为每个所需应用程序设置定义一个属性,并根据设置的范围将 ApplicationScopedSettingAttributeUserScopedSettingAttribute 应用到该属性。 有关设置范围的更多信息,请参见 应用程序设置概述。 至此,您的代码应类似于:

    Imports System.Configuration
    
    Public Class MyUserSettings
        Inherits ApplicationSettingsBase
        <UserScopedSetting()> _
        <DefaultSettingValue("white")> _
        Public Property BackgroundColor() As Color
            Get
                BackgroundColor = Me("BackgroundColor")
            End Get
    
            Set(ByVal value As Color)
                Me("BackgroundColor") = value
            End Set
        End Property
    End Class
    
    using System;
    using System.Configuration;
    using System.Drawing;
    
    public class MyUserSettings : ApplicationSettingsBase
    {
        [UserScopedSetting()]
        [DefaultSettingValue("white")]
        public Color BackgroundColor
        {
            get
            {
                return ((Color)this["BackgroundColor"]);
            }
            set
            {
                this["BackgroundColor"] = (Color)value;
            }
        }
    }
    
  3. 在应用程序中创建此包装类的实例。 它通常是主窗体的一个私有成员。 定义了类后,您需要将它绑定到属性;在本例中,该属性为窗体的 BackColor 属性。 可以在窗体的 Load 事件处理程序中完成此操作。

    Dim Mus As MyUserSettings
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Mus = New MyUserSettings()
        Mus.BackgroundColor = Color.AliceBlue
        Me.DataBindings.Add(New Binding("BackColor", Mus, "BackgroundColor"))
    End Sub
    
    MyUserSettings mus;
    
    private void Form1_Load(object sender, EventArgs e)
    {
        mus = new MyUserSettings();
        mus.BackgroundColor = Color.AliceBlue;
        this.DataBindings.Add(new Binding("BackColor", mus, "BackgroundColor"));
    }
    
  4. 如果您要提供在运行时更改设置的方法,则需要在窗体关闭时,将用户的当前设置保存到磁盘中,否则这些更改将丢失。

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Mus.Save()
    End Sub
    
        //Make sure to hook up this event handler in the constructor!
        //this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
            void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                mus.Save();
            }
    

    您现在已成功创建了新的应用程序设置,并已将其绑定到指定的属性。

安全性

默认设置提供程序 LocalFileSettingsProvider 以纯文本形式将信息保持在配置文件中。 这将限制操作系统为当前用户提供的文件访问安全性的安全性。 因此,必须小心注意配置文件中存储的信息。 例如,应用程序设置的一个常见用途是存储指向该应用程序的数据存储区的连接字符串。 但出于安全的考虑,这种字符串不应包括密码。 有关连接字符串的更多信息,请参见 SpecialSetting

请参见

任务

如何:验证应用程序设置

参考

SpecialSettingAttribute

LocalFileSettingsProvider

概念

应用程序设置概述