С# Сохранение пользовательских настроек


#1

Хочу реализовать возможность сохранение настроек выставленных пользователями и стал вопрос как это лучше всего сделать? Создать свой собственный файл с настройками или использовать уже существующие варианты в платформе .Net? Также прошу навести принести примеры разных вариантов сохранения.


#2

Для сохранения пользовательских настроек вы можете использовать класс ConfigurationSettings через который получать настройки сохранённые в app.config / web.config. Есть несколько вариантов получения настроек:

  1. string value = ConfigurationSettings.AppSettings["Foo"]; // считывает настройку для ключа Foo (он должен присутствовать в файле конфигурации)
    Console.WriteLine(value);
    

Данный вариант получения настроек устарел!

// получить коллекцию NameValueCollection  с всеми настройками сразу    
NameValueCollection appSettings = ConfigurationManager.AppSettings;     
Console.WriteLine(appSettings["Foo"]); // к ней можно обращаться как по ключу, так и по индексу элемента
Console.WriteLine(appSettings[0]);
  1. либо же можно через циклы перебрать все элементы настроек

например:

for (int i = 0; i < appSettings.Count; i++)
{
    Console.WriteLine(appSettings[i]);
}


foreach (string item in appSettings)
{
    Console.WriteLine(appSettings[item]);
}

ну и соответственно сохранение настроек нужно реализовать через запись node с настройками в *.config файл

Также есть вариант сохранения пользовательских настроек в регистре и для этого используется классы Registry и RegistryKey. В этом случаи вам нужно создать папку в регистре для своего приложения и создавать документы с настройками. Советую сперва почитать документацию о работе с регистром прежде чем пытаться всё реализовать, потому что при работе с регистром нужно быть очень осторожным и не изменить/удалить что-то нужное.