Compartilhar via


Como criar configurações de aplicativo

Usando o código gerenciado, você pode criar novas configurações de aplicativo e associá-las a propriedades no formulário ou nos controles do formulário, para que essas configurações sejam carregadas e salvas automaticamente em tempo de execução.

No procedimento a seguir, você cria manualmente uma classe wrapper derivada de ApplicationSettingsBase. A essa classe, você adiciona uma propriedade acessível publicamente para cada configuração de aplicativo que você deseja expor.

Você também pode executar esse procedimento usando código mínimo no designer do Visual Studio. Consulte também Como criar configurações de aplicativo usando o designer.

Para criar novas configurações de aplicativo programaticamente

  1. Adicione uma nova classe ao projeto e renomeie-a. Para este procedimento, chamaremos essa classe de MyUserSettings. Altere a definição de classe para que a classe deriva de ApplicationSettingsBase.

  2. Defina uma propriedade nessa classe wrapper para cada configuração de aplicativo necessária e aplique essa propriedade com o ApplicationScopedSettingAttribute ou UserScopedSettingAttribute, dependendo do escopo da configuração. Para obter mais informações sobre o escopo de configurações, consulte Visão geral das Configurações do Aplicativo. Agora, seu código deve ter esta aparência:

    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;
            }
        }
    }
    
    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
    
  3. Crie uma instância dessa classe wrapper em seu aplicativo. Normalmente, ele será um membro privado do formulário principal. Agora que você definiu sua classe, você precisa associá-la a uma propriedade; nesse caso, a propriedade BackColor do formulário. Você pode fazer isso no manipulador de eventos Load do formulário.

    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"));
    }
    
    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
    
  4. Se você fornecer uma maneira de alterar as configurações em tempo de execução, será necessário salvar as configurações atuais do usuário no disco quando o formulário for fechado ou então essas alterações serão perdidas.

    //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();
        }
    
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Mus.Save()
    End Sub
    

    Agora você criou com êxito uma nova configuração de aplicativo e a vinculou à propriedade especificada.

O exemplo a seguir mostra um arquivo de configurações de aplicativo que define duas configurações com escopo de aplicativo e duas configurações com escopo de usuário. Você precisa adicionar os nomes das configurações que você criou como entradas no elemento configSections <> no topo do arquivo.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </sectionGroup>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" />
    </sectionGroup>
  </configSections>
  <applicationSettings>
    <WindowsApplication1.Properties.Settings>
      <setting name="Cursor" serializeAs="String">
        <value>Default</value>
      </setting>
      <setting name="DoubleBuffering" serializeAs="String">
        <value>False</value>
      </setting>
    </WindowsApplication1.Properties.Settings>
  </applicationSettings>
  <userSettings>
    <WindowsApplication1.Properties.Settings>
      <setting name="FormTitle" serializeAs="String">
        <value>Form1</value>
      </setting>
      <setting name="FormSize" serializeAs="String">
        <value>595, 536</value>
      </setting>
    </WindowsApplication1.Properties.Settings>
  </userSettings>
</configuration>

Segurança do .NET Framework

O provedor de configurações padrão, LocalFileSettingsProvider, persiste as informações para arquivos de configuração como texto sem formatação. Isso limita a segurança à segurança de acesso ao arquivo fornecida pelo sistema operacional para o usuário atual. Por isso, é necessário ter cuidado com as informações armazenadas nos arquivos de configuração. Por exemplo, um uso comum para configurações de aplicativo é armazenar cadeias de conexão que apontam para o armazenamento de dados do aplicativo. No entanto, devido a questões de segurança, essas cadeias de caracteres não devem incluir senhas. Para obter mais informações sobre cadeias de conexão, consulte SpecialSetting.

Consulte também