Иногда возникает ситуация когда нужно чтоб настройки вашей программы били сохранены (сохранение смены интерфейса, локализации программы, автозагрузка и т.д.) и многие начинающие программисты не знают как это сделать.
Сегодня я Вам расскажу как сохранять настройки в XML файл, а не через стандартные средства C#. Почему через XML? Чтобы программа была переносимой без различного "геморроя".
И так приступим.
1. Для начала нам потребуется создать проект WinForms.
2. Добавим в проект новый класс под именем Props и напишем следующий код:
using System; //надо добавить для работы класса using System.Xml.Serialization; using System.IO; namespace XMLFileSettings { //Класс определяющий какие настройки есть в программе public class PropsFields { public String XMLFileName = Environment.CurrentDirectory +"\\settings.xml"; //Чтобы добавить настройку в программу просто добавьте туда строку вида - //public ТИП ИМЯ_ПЕРЕМЕННОЙ = значение_переменной_по_умолчанию; public String TextValue = @"File Settings"; public DateTime DateValue = new DateTime(2011, 1, 1); public Decimal DecimalValue = 555; public Boolean BoolValue = true; } //Класс работы с настройками public class Props { public PropsFields Fields; public Props() { Fields = new PropsFields(); } //Запись настроек в файл public void WriteXml() { XmlSerializer ser = new XmlSerializer(typeof(PropsFields)); TextWriter writer = new StreamWriter(Fields.XMLFileName); ser.Serialize(writer, Fields); writer.Close(); } //Чтение настроек из файла public void ReadXml() { if (File.Exists(Fields.XMLFileName)){ XmlSerializer ser = newXmlSerializer(typeof(PropsFields)); TextReader reader = new StreamReader(Fields.XMLFileName); Fields = ser.Deserialize(reader) as PropsFields; reader.Close(); } else{ //можно написать вывод сообщения если файла не существует } } } }
Теперь чтоб использовать класс для сохранения настроек сделаем следующие: 1. Расположим на форме две кнопки (Button) одна для записи настроек, а другая для чтения, один checkBox - автозагрузка приложения и comboBox - так просто:)
2. Пишем код для записи настроек и компонентов
using System; using System.Windows.Forms; namespace XMLFileSettings { public partial class Form1 : Form { #region Settings action Props props = new Props(); //экземпляр класса с настройками //Запись настроек private void writeSetting() { //Запись значения в ComboBox1 props.Fields.TextValue = ComboBox1.Text; //Запись значения в checkBox1 props.Fields.BoolValue = checkBox1.Checked; props.WriteXml(); } //Чтение настроек private void readSetting() { props.ReadXml(); ComboBox1.Text = props.Fields.TextValue; checkBox1.Checked = props.Fields.BoolValue; } #endregion #region Form Action public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { readSetting(); } private void button2_Click(object sender, EventArgs e) { writeSetting(); } #endregion } }
Если что то непонятно пишите в комментариях!