RafaelFranckilin Posted June 23, 2018 at 02:23 PM Report #611094 Posted June 23, 2018 at 02:23 PM 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.
Timóteo nkawa Posted June 25, 2018 at 06:07 AM Report #611104 Posted June 25, 2018 at 06:07 AM (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 June 25, 2018 at 08:17 AM by M6 1 Report
RafaelFranckilin Posted June 25, 2018 at 11:54 AM Author Report #611113 Posted June 25, 2018 at 11:54 AM Obrigado pela atenção, amigo Mas você poderia simplificar um pouco e me mostrar um exemplo funcionando no form com um botão e um checkbox, sendo que quando marcado o checkbox, o botão seja desabilitado?
Timóteo nkawa Posted June 25, 2018 at 01:36 PM Report #611114 Posted June 25, 2018 at 01:36 PM 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. 1 Report
RafaelFranckilin Posted June 25, 2018 at 02:12 PM Author Report #611118 Posted June 25, 2018 at 02:12 PM (edited) Agora eu entendi 😁 E como eu faço pra ler as chaves e valores e aplicar as configurações no meu aplicativo? Como eu posso excluir uma determinada chave e seu valor? Edited June 25, 2018 at 02:17 PM by RafaelFranckilin
Timóteo nkawa Posted June 25, 2018 at 03:26 PM Report #611120 Posted June 25, 2018 at 03:26 PM (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 June 25, 2018 at 04:00 PM by M6 Formatação de código. 1 Report
RafaelFranckilin Posted June 25, 2018 at 05:02 PM Author Report #611122 Posted June 25, 2018 at 05:02 PM 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?
Timóteo nkawa Posted June 25, 2018 at 05:43 PM Report #611124 Posted June 25, 2018 at 05:43 PM 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í!
RafaelFranckilin Posted June 25, 2018 at 05:52 PM Author Report #611125 Posted June 25, 2018 at 05:52 PM Vou pesquisar Muito obrigado 😄
RafaelFranckilin Posted June 29, 2018 at 02:31 PM Author Report #611170 Posted June 29, 2018 at 02:31 PM (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 June 29, 2018 at 06:25 PM by RafaelFranckilin
Timóteo nkawa Posted July 2, 2018 at 01:04 PM Report #611189 Posted July 2, 2018 at 01:04 PM olá, dê uma olhada neste tutorial: https://yizeng.me/2013/08/31/update-appsettings-and-custom-configuration-sections-in-appconfig-at-runtime/
RafaelFranckilin Posted July 3, 2018 at 11:19 AM Author Report #611200 Posted July 3, 2018 at 11:19 AM 22 horas atrás, Timóteo nkawa disse: olá, dê uma olhada neste tutorial: https://yizeng.me/2013/08/31/update-appsettings-and-custom-configuration-sections-in-appconfig-at-runtime/ Vou estudar esse tutorial. Obrigado, amigo
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now