C#: Хранение настроек программы или Properties.Settings в действии

Зачем приложению нужны настройки, думаю объяснять не нужно, поэтому сегодня я решил поведать о том как легко организовать в Вашем приложении хранение настроек. А именно их сохранение и считывание…

Подойти к решению вопроса организации хранения параметров для работы Вашего приложения множество. Например Вы можете использовать xml и сериализацию, ini или обычные текстовые файлы, байты в конце концов. Однако я расскажу о самом просом способе организации хранения настроек без изобретения велосипеда. Назовем это решение в лоб для новичков. И в этом мне поможет объект Properties.Settings, который доступен сразу при создании, например, WinForm приложения.
Для начала создадим новое WinForm приложение. Затем дважды щелкнем по пункту Settings.settings (1) папки Properties в дереве программы. В открывшемся окне мы увидим таблицу с возможностью создания переменных (2).

настройка программы

Здесь мы можем задать имя нашей переменной настроек, обозначить ее тип и значение по умолчанию. В нашем случае я создал три переменных типа int, string и Color. Переменная AutoExit будет отвечать за время в секундах через которое программа будет закрываться (если значение > 0), переменная Title — заголовок окна формы, а BgColor цвет нашей формы.

form-sample

Теперь добавим на нашу форму элементы numericUpDown, TextBox, Button и colorDialog. Для наглядности я добавил еще несколько элементов label.
Теперь дважды кликнем на кнопку «Choose» и пропишем код, который позволит нам выбирать цвет и хранить его внутри объекта colorDialog1.

private void button1_Click(object sender, EventArgs e)
{
 colorDialog1.ShowDialog();
}

Далее я просто выложу код, который в итоге должен будет получиться (с комментариями для ясности)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        //создадим таймер, который будет закрывать приложение если
        //значение autoexit > 0
        private Timer t = new Timer();
        
        //Конструктор формы
        public Form1()
        {
            InitializeComponent();
            //создадим событие срабатывания таймера
            t.Tick += new EventHandler(t_Tick); 
        }
        //Функция срабатывания таймера
        private void t_Tick(object sender, EventArgs e)
        {
            //закрываем наше приложение
            Application.Exit();
        }

        //Переопределим выход из программы 
        //Занесем значения элементв с формы в объект Properties.Settings и сохраним настройки
        protected override void OnClosing(CancelEventArgs e)
        {
            Properties.Settings.Default.Title = this.textBox1.Text;
            Properties.Settings.Default.AutoExist = (int)this.numericUpDown1.Value;
            Properties.Settings.Default.BgColor = this.colorDialog1.Color;
            Properties.Settings.Default.Save();
        }
        
        //функция которая будет вызывать при загрузке приложения
        //юудет заполнять элементы на форме, а так же применять их значения
        private void LoadSettings()
        {
            this.textBox1.Text = Properties.Settings.Default.Title;
            this.numericUpDown1.Value = (decimal)Properties.Settings.Default.AutoExist;
            this.colorDialog1.Color = Properties.Settings.Default.BgColor;

            if (this.numericUpDown1.Value > 0)
            {
                //если значение autoexit > 0 то запускаем таймер
                t.Interval = (int)this.numericUpDown1.Value * 1000;
                t.Enabled = true;
            }
            this.BackColor = this.colorDialog1.Color;
            this.Text = this.textBox1.Text;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //вызываем функцию считывания настроек, после загрузки программы
            this.LoadSettings();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //открываем окно для выбора цвета
            colorDialog1.ShowDialog();
        }
    }
}

Надеюсь комментарии исчерпывающие. Как видно настройки в объект Properties.Settings считываются автоматически при загрузки приложения. Однако чтобы сохранить их, нужно вызывать метод Save. Для тех, кому интересно организация объекта Properties.Settings могу сказать, что это обычный xml файл, который можно найти в папке пользователя (или всех пользователей в зависимости от типа настроек). Для win7 это путь [СИСТЕМНЫЙ ДИСК]:\Users\[ИМЯ ПОЛЬЗОВАТЕЛЯ]\AppData\Local\[ИМЯ ПРИЛОЖЕНИЯ]\[ИМЯ ПРИЛОЖЕНИЯ И ХЭШ]\[ВЕРСИЯ ПРИЛОЖЕНИЯ]\user.config.

Запись опубликована в рубрике C# с метками , , , , , , , , , , , . Добавьте в закладки постоянную ссылку.