Jump to content

Recommended Posts

Posted

Pessoal, acabei de entrar pra comunidade. Sou novo nesse mundo da programação, no momento eu tô tentando entender como eu posso utilizar esse app.config pra guardar configurações.

Eu pesquisei bastante na internet, mas não encontrei nada que eu conseguisse entender.

Vocês poderiam me mostrar um exemplo simples? Tipo com um checkbox e um botão, quando marcar o checkbox, o botão seja desabilitado e grave essa configuração no arquivo de configuração.

Posted (edited)

Olá Rafael!

Dê dois cliques no teu arquive app.Config dentro do  teu projecto, depois do fechamento de qualquer secção que termine com </.....> crie esta secção :

<appSettings>

</appSettings>

importa estas namespace  

Import System.IO

Import System.Configuration

Import System.Reflection

Aqui seque o método para adicionar uma chave(key) e um valor(value) da chave que pode usar futuramente no seu aplicativo: 

Private Shared appPath As String = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
Private configFile As String = Path.Combine(appPath, "App.config")

Private configFileMap As ExeConfigurationFileMap = new ExeConfigurationFileMap()

Private Sub AddKeyValue(byval key As String, byval value As Object)

           configFileMap.ExeConfigFilename = configFile
            Dim config As Configuration = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None)
            If value = null
                MsgBox("O parâmetro value não contém nenhum valor!")
            else If key = null Then
                 MsgBox("O parâmetro key não contém nenhum valor!")
            else
                config.AppSettings.Settings.Add(key, value.ToString())
                config.Save(ConfigurationSaveMode.Minimal)
                ConfigurationManager.RefreshSection("appSettings")

           End If

End Sub

Obs: o parâmetro key é o nome da chave que quere criar e o value é o valor que quere  guardar aí para depois usar no teu programa.

para ver o resultado entre no directorio do teu programa na pasta bin\Debug\  Abra o arquivo de configuração que tem este formato: nomedoteuprograma.exe.Config,

ou em outros casos ele estará com seu próprio nome app.Config vai até na section <appSettings> e confirme o resultado.

ops! o código era em c# e fiz esforço possível para converter em vb.net caso note algumas diferências e favor de reagir caso isso te ajudou ou não.

um abraço!

Edited by M6
  • Vote 1
Posted

Olá!

aqui segue o exemplo.

crie um projecto do windows Form no formulário adicione dois textbox e um botão, pode usar se quiser um checkbox como preferir, se quiser seguir à letra o código de exemplo nomeie o botão e os textboxs segundo o exemplo. Como já falei anteriormente adicione a secção <appSettings> </appSettings> no arquivo app.Config depois clique com botão direito do mouse em cima de Referências(References se está usar uma versão do vs em inglês) no contextmenu clique em Adicionar Referência(Add Reference) na janela aberta clique em Assemblies percorre  a lista até no assembly System.Configuration cheque o e dá OK. feito isso usa o código a baixo dentro do teu formulário.

Imports System.Configuration
Public Class Form1

    Private Sub BtnAdd_Click(sender As Object, e As EventArgs) Handles BtnAdd.Click

        Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
        If TxtValue.Text = "" Then
            MsgBox("O parâmetro value não contém nenhum valor!")
        ElseIf TxtKey.Text = "" Then
            MsgBox("O parâmetro key não contém nenhum valor!")
        Else
            config.AppSettings.Settings.Add(TxtKey.Text, TxtValue.Text)
            config.Save(ConfigurationSaveMode.Minimal)
            ConfigurationManager.RefreshSection("appSettings")
            MsgBox("Nova chave adicionada!")
        End If

    End Sub
End Class

Para confirmar o resultado vai no directório do seu projecto na pasta Bin\Debug abre com bloco de nota o arquivo do tipo nomedoseuprojeto.exe.Config e pronto!

Caso te tenha ajudado dá um feed back.

  • Vote 1
Posted (edited)

Tudo bem!

Adicione dois botões no teu Form um para Ver o valor duma determinada chave e o outro para eliminar uma chave. Quanto a atualização o método Add empenha os dois papeis ou seja

quando a chave não existe ele cria caso contrário ele atualizar o valor. Aqui esta o código do projecto completo:

Imports System.Configuration
Public Class Form1

    Private Sub BtnAdd_Click(sender As Object, e As EventArgs) Handles BtnAdd.Click

        Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
        If TxtValue.Text = "" Then
            MsgBox("O parâmetro value não contém nenhum valor!")
        ElseIf TxtKey.Text = "" Then
            MsgBox("O parâmetro key não contém nenhum valor!")
        Else
            config.AppSettings.Settings.Add(TxtKey.Text, TxtValue.Text)
            config.Save(ConfigurationSaveMode.Minimal)
            ConfigurationManager.RefreshSection("appSettings")
            MsgBox("Nova chave adicionada!")
        End If

    End Sub

    Private Sub BtnVer_Click(sender As Object, e As EventArgs) Handles BtnVer.Click

        Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
        If TxtKey.Text = "" Then
            MsgBox("O parâmetro key não contém nenhum valor!")
        Else
            TxtValue.Text = config.AppSettings.Settings(TxtKey.Text).Value
        End If
    End Sub

    Private Sub BtnEliminar_Click(sender As Object, e As EventArgs) Handles BtnEliminar.Click

        Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
        If TxtKey.Text = "" Then
            MsgBox("O parâmetro key não contém nenhum valor!")
        Else
            config.AppSettings.Settings.Remove(TxtKey.Text)
            config.Save(ConfigurationSaveMode.Minimal)
            ConfigurationManager.RefreshSection("appSettings")
            MsgBox("Chave eliminada!")
        End If
    End Sub
End Class

Para pegar o valor duma chave é só introduzir o nome dele no textbox txtKey e clicar em Ver. Para eliminar da mesma clicando em eliminar.

Força!

Edited by M6
Formatação de código.
  • Vote 1
Posted

Perfeito

Muito obrigado, amigo

Vou te fazer só mais algumas perguntas 😅

Da pra criar um appSettings_2 por código?

Quando a chave não existe, o método add cria, caso contrário ele atualizar o valor, mas na verdade ele ta adicionando outro valor,

tipo <add key="CheckedBox1" value="True" /> => <add key="CheckedBox1" value="True, False" />.

É possível atualizar o valor, ou vou ter que excluir a chave e criar outra?

Como eu posso fazer um laço para ler todas as chaves e valores de uma vez, independente de saber o nome delas?

Posted

Olá Rafael!

na sua primeira pergunta digo que sim o arquivo app.Config é do tipo xml portanto você pode adicionar suas tags ou secções  personalizadas a vontade, daí aconselho te a pesquisar ainda um pouco sobre xml, caso te ficar confuso pode me escrever sem problema. Na segunda observação o comportamento do método Add é de adicionar o valor depois do outro se ja existe, a classe settings não possui o método Update(), por isso até descubrir outro mecanismo pode excluir e recriar de novo a chave com o novo valor. 

Sucesso aí!

Posted (edited)

Olá

Eu não consegui aprender criar outras tags no meu arquivo de configuração, você poderia me ajudar com isso?

Eu só preciso de um exemplo de como adicionar uma tag, ler e escrever nela.

eu aprendi como atualizar uma chave 😁

Em 25/06/2018 às 14:43, Timóteo nkawa disse:

a classe settings não possui o método Update()

 'Modifica o valor da chave chek1
 config.AppSettings.Settings("chek1").Value = (True)
 config.Save(ConfigurationSaveMode.Modified)

 

Obrigado.

Edited by RafaelFranckilin

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.