Создаем класс Props и прописываем туда следующий код
using System;
//Надо добавить для работы класса
using System.Xml.Serialization;
using System.IO;
namespace XMLFileSettings
{
//Класс определяющий какие настройки есть в программе
public class PropsFields
{
//Путь до файла настроек
public String XMLFileName = System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("PROGRAM_NAME.exe", "") + "settings.xml";
//Чтобы добавить настройку в программу просто добавьте суда строку вида -
//public ТИП ИМЯ_ПЕРЕМЕННОЙ = значение_переменной_по_умолчанию;
public String TextValue = @"Testing XML 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 = new XmlSerializer(typeof(PropsFields));
TextReader reader = new StreamReader(Fields.XMLFileName);
Fields = ser.Deserialize(reader) as PropsFields;
reader.Close();
}
else{}
}
}
}
Теперь, чтобы использовать настройки в своей программе сделаем следующее -
using System; using System.Windows.Forms; namespace XMLFileSettings { public partial class Form1 : Form { #region Settings action Props props = new Props(); //Запись настроек private void writeSetting() { props.Fields.TextValue = textBox1.Text; props.Fields.DateValue = dateTimePicker1.Value; props.Fields.DecimalValue = numericUpDown1.Value; props.Fields.BoolValue = checkBox1.Checked; props.WriteXml(); } //Чтение настроек private void readSetting() { props.ReadXml(); textBox1.Text = props.Fields.TextValue; dateTimePicker1.Value = props.Fields.DateValue; numericUpDown1.Value = props.Fields.DecimalValue; 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 } }
Код был написан Владимиром Павловичем , я же взял на себя смелость опубликовать его :)
Пример программы
Спасибо, отличная реализация.
ОтветитьУдалитьспасибо, но для datatable пришлось использовать BinaryFormatter
ОтветитьУдалить