background img

The New Stuff

Сохранения настроек в XML

Иногда возникает ситуация когда нужно чтоб настройки вашей программы били сохранены (сохранение смены интерфейса, локализации программы, автозагрузка и т.д.) и многие начинающие программисты не знают как это сделать (сам когда то искал :)).
Сегодня я вам расскажу как сохранять настройки в XML файл, а не через стандартные средства C#. Почему через XML? Это чтоб программа била переносимой без различного "геморроя".
И так приступим.
1. Для начала нам потребуется создать проект WinForms.
2. Добавим в проект новый класс под  именем Props и напишем следующий код:

01.using System;
02.//Надо добавить для работы класса
03.using System.Xml.Serialization;
04.using System.IO;
05. 
06.namespace XMLFileSettings
07.{
08.//Класс определяющий какие настройки есть в программе
09.public class PropsFields
10.{
11.//Путь до файла настроек
12.public String XMLFileName = Environment.CurrentDirectory +"\\settings.xml";
13. 
14.//Чтобы добавить настройку в программу просто добавьте суда строку вида -
15.//public ТИП ИМЯ_ПЕРЕМЕННОЙ = значение_переменной_по_умолчанию;
16.public String TextValue = @"File Settings";
17.public DateTime DateValue = new DateTime(2011, 1, 1);
18.public Decimal DecimalValue = 555;
19.public Boolean BoolValue = true;
20.}
21. 
22.//Класс работы с настройками
23.public class Props
24.{
25.public PropsFields Fields;
26. 
27.public Props()
28.{
29.Fields = new PropsFields();
30.}
31. 
32.//Запист настроек в файл
33.public void WriteXml()
34.{
35.XmlSerializer ser = new XmlSerializer(typeof(PropsFields));
36.TextWriter writer = new StreamWriter(Fields.XMLFileName);
37.ser.Serialize(writer, Fields);
38.writer.Close();
39.}
40.//Чтение настроек из файла
41.public void ReadXml()
42.{
43.if (File.Exists(Fields.XMLFileName)){
44.XmlSerializer ser = newXmlSerializer(typeof(PropsFields));
45.TextReader reader = new StreamReader(Fields.XMLFileName);
46.Fields = ser.Deserialize(reader) as PropsFields;
47.reader.Close();
48.}
49.else{//можно написать вывод какова то сообщения если файла не существует}
50.}
51.}
52.}

Теперь чтоб использовать класс для сохранения настрой сделаем следующие:
1. Расположим на форме две кнопки (Button) одна для записи настроек, а другая для чтения, один checkBox - автозагрузка приложения и comboBox - так просто:)


2. Пишем код для записи настроек с компонентов


01.using System;
02.using System.Windows.Forms;
03. 
04.namespace XMLFileSettings
05.{
06.public partial class Form1 : Form
07.{
08.#region Settings action
09.Props props = new Props(); //экземпляр класса с настройками 
10. 
11.//Запись настроек
12.private void writeSetting()
13.{
14.//запись состояния ComboBox1
15.props.Fields.TextValue = ComboBox1.Text;
16.//запись состояния checkBox1
17.props.Fields.BoolValue = checkBox1.Checked;
18. 
19.props.WriteXml();
20.}
21. 
22.//Чтение настроек
23.private void readSetting()
24.{
25.props.ReadXml();
26. 
27.ComboBox1.Text = props.Fields.TextValue;
28.
29.
30.checkBox1.Checked = props.Fields.BoolValue;
31.}
32.#endregion
33. 
34.#region Form Action
35.public Form1()
36.{
37.InitializeComponent();
38.}
39.           //события клика на кнопку Save
40.private void button1_Click(object sender, EventArgs e)
41.{
42.readSetting();
43.}
//события клика на кнопку Read
44.private void button2_Click(object sender, EventArgs e) 
45.{
46.writeSetting(); 
47.}
48.#endregion
49.}
50.}


На этом все, далее разбирайтесь сами, если что то непонятно пишите в комментариях!
P.S. В статье "Делаем шкуры для программ" можно использовать сохранение настроек которые я здесь описал.
Удачи в программировании!
Скачать проект.
Иногда возникает ситуация когда нужно чтоб настройки вашей программы били сохранены (сохранение смены интерфейса, локализации программы, автозагрузка и т.д.) и многие начинающие программисты не знают как это сделать (сам когда то искал :)).
Сегодня я вам расскажу как сохранять настройки в XML файл, а не через стандартные средства C#. Почему через XML? Это чтоб программа била переносимой без различного "геморроя".
И так приступим.
1. Для начала нам потребуется создать проект WinForms.
2. Добавим в проект новый класс под  именем Props и напишем следующий код:

01.using System;
02.//Надо добавить для работы класса
03.using System.Xml.Serialization;
04.using System.IO;
05. 
06.namespace XMLFileSettings
07.{
08.//Класс определяющий какие настройки есть в программе
09.public class PropsFields
10.{
11.//Путь до файла настроек
12.public String XMLFileName = Environment.CurrentDirectory +"\\settings.xml";
13. 
14.//Чтобы добавить настройку в программу просто добавьте суда строку вида -
15.//public ТИП ИМЯ_ПЕРЕМЕННОЙ = значение_переменной_по_умолчанию;
16.public String TextValue = @"File Settings";
17.public DateTime DateValue = new DateTime(2011, 1, 1);
18.public Decimal DecimalValue = 555;
19.public Boolean BoolValue = true;
20.}
21. 
22.//Класс работы с настройками
23.public class Props
24.{
25.public PropsFields Fields;
26. 
27.public Props()
28.{
29.Fields = new PropsFields();
30.}
31. 
32.//Запист настроек в файл
33.public void WriteXml()
34.{
35.XmlSerializer ser = new XmlSerializer(typeof(PropsFields));
36.TextWriter writer = new StreamWriter(Fields.XMLFileName);
37.ser.Serialize(writer, Fields);
38.writer.Close();
39.}
40.//Чтение настроек из файла
41.public void ReadXml()
42.{
43.if (File.Exists(Fields.XMLFileName)){
44.XmlSerializer ser = newXmlSerializer(typeof(PropsFields));
45.TextReader reader = new StreamReader(Fields.XMLFileName);
46.Fields = ser.Deserialize(reader) as PropsFields;
47.reader.Close();
48.}
49.else{//можно написать вывод какова то сообщения если файла не существует}
50.}
51.}
52.}

Теперь чтоб использовать класс для сохранения настрой сделаем следующие:
1. Расположим на форме две кнопки (Button) одна для записи настроек, а другая для чтения, один checkBox - автозагрузка приложения и comboBox - так просто:)


2. Пишем код для записи настроек с компонентов


01.using System;
02.using System.Windows.Forms;
03. 
04.namespace XMLFileSettings
05.{
06.public partial class Form1 : Form
07.{
08.#region Settings action
09.Props props = new Props(); //экземпляр класса с настройками 
10. 
11.//Запись настроек
12.private void writeSetting()
13.{
14.//запись состояния ComboBox1
15.props.Fields.TextValue = ComboBox1.Text;
16.//запись состояния checkBox1
17.props.Fields.BoolValue = checkBox1.Checked;
18. 
19.props.WriteXml();
20.}
21. 
22.//Чтение настроек
23.private void readSetting()
24.{
25.props.ReadXml();
26. 
27.ComboBox1.Text = props.Fields.TextValue;
28.
29.
30.checkBox1.Checked = props.Fields.BoolValue;
31.}
32.#endregion
33. 
34.#region Form Action
35.public Form1()
36.{
37.InitializeComponent();
38.}
39.           //события клика на кнопку Save
40.private void button1_Click(object sender, EventArgs e)
41.{
42.readSetting();
43.}
//события клика на кнопку Read
44.private void button2_Click(object sender, EventArgs e) 
45.{
46.writeSetting(); 
47.}
48.#endregion
49.}
50.}


На этом все, далее разбирайтесь сами, если что то непонятно пишите в комментариях!
P.S. В статье "Делаем шкуры для программ" можно использовать сохранение настроек которые я здесь описал.
Удачи в программировании!
Скачать проект.

0 коммент.:

Отправить комментарий

Popular Posts