Приветствую всех! Когда наши приложения начинают превращаться в большие проекты, обрастая все большим функционалом. Нам как разработчикам приходится производить сохранения настроек программы, к примеру, цвет, размер, расположения, заполнения форм итд. Для этих целей существует несколько вариантов.
1. База данных, либо текстовые файлы и их аналоги.
2. Реестр.
3. Конфигурационный фаил.
4. Внутри самого приложения.
С первым вариантом все понятно, создать фаил или базу и сохранить в них соответствующие настройки.
С реестром по сложнее, так как для работы с ним, приложение должно быть запущенно от имени администратора, это не удобно, и не все пользователи обладают такими правами. Однако можно приобрести лицензию в районе 500$ в год, и ваше приложение сможет вносить изменения в реестр без запуска от имени администратора.
А вот последних два варианта мы сейчас и рассмотрим как этом можно сделать.
После компиляции приложения в папки с *.exe у нас находятся не сколько файлов, один из них конфигурационный.
Обычно к имени исполняемого файла с расширением добавляется .config , он и является вашим конфигурационным файлом.
Именно с ним мы можем распространять свое приложения и производить сохранения в него.
Основан он на XML формате и первоначально имеет следующее содержимое:
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> </configuration> |
Для этого нам надо будет подключить сборки и добавить ссылки:
1 2 |
using System.Collections.Specialized; using System.Configuration; |
Далее нам нужно в файле конфигурации создать ключи и значения, у меня вот что получилось:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <appSettings> <add key="sizeW" value="30"/> <add key="sizeH" value="30"/> </appSettings> </configuration> |
Теперь нам нужно написать логику программы, я решил восстанавливать размер консоли тот что находится в конфигурационном файле:
1 2 3 4 5 6 7 8 9 |
static void Main(string[] args) { NameValueCollection allAppSettings = ConfigurationManager.AppSettings; int w = int.Parse(allAppSettings["sizeW"]); int h = int.Parse(allAppSettings["sizeH"]); Console.SetWindowSize(w,h); Console.ReadKey(); } |
По сути это лишь удобство которое разработало Microsoft, на самом деле обычная работа с Xml файлом, который хранит в себе соответствующие настройки приложения.
Еще одним интересным способом является сохранения настроек внутри самого приложения:
Для этого создайте приложения и выберите его свойство, в открытом окне перейдите во вкладу параметры и установите как на рисунке:
Здесь мы задали имя переменно, а точнее два имени w и h которые будут означать ширину и высоту консольного окна, далее мы выбрали тип переменно, область и значения в 30 пикселей.
Далее нам необходимо подключить сборку, она состоит из названия приложения и .Properties;
1 |
using MyApp.Properties; |
Теперь рассмотрим сам код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System; using MyApp.Properties; namespace MyApp { class Program { static void Main(string[] args) { int w = (int)Settings.Default["w"]; //считываем значения int h =(int)Settings.Default["h"]; Console.SetWindowSize(w,h); Console.WriteLine("w={0} h={1}",w,h); Settings.Default["w"]=w+1; Settings.Default["h"]=h+1; Settings.Default.Save(); //сохраняем новые значения Console.ReadKey(); } } } |
Как видно из кода программы работа с настройками совсем не сложная, мы в начале считываем данные с переменных и сохраняем их, после изменяем окно консоли и выводим их значения, далее увеличиваем значения на 1 и производим сохранения настроек.
Теперь попробуйте несколько раз запустить приложения и вы увидите как окно и значения изменяются каждый раз.