1, Adicionando uma classe auxiilar JsonSettingsManager no DAL
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
* É necessário adicionar a referência Newtonsoft.Json.dl
*/
namespace SistemaRelatoriosDAL
{
public class JsonSettingsManager
{
private static Dictionary<string, string> settingsDictionary = new Dictionary<string, string>();
/// <summary>
/// Obtém uma configuração específica
/// </summary>
/// <param name="chave">Chave da configuração</param>
/// <returns>Valor da configuração ou string vazia se não existir</returns>
public static string ObterConfiguracao(string chave)
{
if (!File.Exists("configuracoes.json")) // Se não existir, cria o arquivo
{
using (FileStream arquivo = File.Create("configuracoes.json"))
{
arquivo.Close();
}
}
string conteudo = File.ReadAllText("configuracoes.json");
try
{
settingsDictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(conteudo);
}
catch
{
settingsDictionary = new Dictionary<string, string>();
}
return settingsDictionary != null && settingsDictionary.ContainsKey(chave)
? settingsDictionary[chave]
: string.Empty;
}
/// <summary>
/// Salva uma configuração
/// </summary>
/// <param name="chave">Chave da configuração</param>
/// <param name="valor">Valor a ser salvo</param>
public static void SalvarConfiguracao(string chave, string valor)
{
if (settingsDictionary == null)
{
settingsDictionary = new Dictionary<string, string>();
}
settingsDictionary[chave] = valor;
string json = JsonConvert.SerializeObject(settingsDictionary);
File.WriteAllText("configuracoes.json", json);
}
/// <summary>
/// Remove uma configuração
/// </summary>
/// <param name="chave">Chave da configuração a ser removida</param>
public static void RemoverConfiguracao(string chave)
{
if (settingsDictionary != null && settingsDictionary.ContainsKey(chave))
{
settingsDictionary.Remove(chave);
string json = JsonConvert.SerializeObject(settingsDictionary);
File.WriteAllText("configuracoes.json", json);
}
}
}
}
2, Carregando confiugrações ao iniciar o formulário
//【1】Carregar configurações salvas
configuracoes.CaminhoArquivoReferencia = JsonSettingsManager.ObterConfiguracao(this.txt_CaminhoReferencia.Name);
configuracoes.CaminhoArquivoComparacao = JsonSettingsManager.ObterConfiguracao(this.txt_CaminhoComparacao.Name);
configuracoes.CaminhoArquivoAtlas = JsonSettingsManager.ObterConfiguracao(this.txt_CaminhoAtlas.Name);
//【2】Atualizar valores nos controles
this.txt_CaminhoReferencia.Text = configuracoes.CaminhoArquivoReferencia;
this.txt_CaminhoComparacao.Text = configuracoes.CaminhoArquivoComparacao;
this.txt_CaminhoAtlas.Text = configuracoes.CaminhoArquivoAtlas;
3, Atualizando configurações através de um botão
// Método para salvar as alterações nas configurações
private void btn_SalvarAlteracoes_Click(object sender, EventArgs e)
{
JsonSettingsManager.SalvarConfiguracao(this.txt_CaminhoReferencia.Name, this.txt_CaminhoReferencia.Text);
JsonSettingsManager.SalvarConfiguracao(this.txt_CaminhoComparacao.Name, this.txt_CaminhoComparacao.Text);
JsonSettingsManager.SalvarConfiguracao(this.txt_CaminhoAtlas.Name, this.txt_CaminhoAtlas.Text);
}
4, Local do arquivo de configurração salvo