Partilhar via


Como: Criar configurações do aplicativo

Usando código gerenciado, você pode criar novas configurações de aplicativo e vinculá-las às propriedades no formulário ou aos 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 que deriva de ApplicationSettingsBase. A essa classe, você adiciona uma propriedade acessível publicamente para cada configuração de aplicativo que 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 do aplicativo usando o Designer.

Para criar novas configurações do aplicativo programaticamente

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

  2. Defina uma propriedade nessa classe de 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 das configurações, consulte Visão geral das configurações do aplicativo. Até 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. Geralmente, será um membro privado do formulário principal. Agora que você definiu sua classe, você precisa vinculá-la a uma propriedade; Nesse caso, a propriedade BackColor do seu 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, precisará salvar as configurações atuais do usuário no disco quando o formulário for fechado, caso contrário, 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 do aplicativo que define duas configurações com escopo do aplicativo e duas configurações com escopo do usuário. Você precisa adicionar os nomes para as configurações que criou, como entradas, sob o elemento configSections <> no topo do ficheiro.

<?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 os arquivos de configuração como texto sem formatação. Isso limita a segurança à segurança de acesso a arquivos fornecida pelo sistema operacional para o usuário atual. Por isso, é preciso 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 preocupaçõ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.

Ver também