[英]How to write / read multi-line text in an XML file?
我正在尝试将一些应用程序设置保存到XML文件。 为此,我在单个Props.cs
文件中使用以下代码:
using System;
//надо добавить для работы класса
using System.Xml.Serialization;
using System.IO;
namespace SettingWinForm
{
//Класс определяющий какие настройки есть в программе
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 = new XmlSerializer(typeof(PropsFields));
TextReader reader = new StreamReader(Fields.XMLFileName);
Fields = ser.Deserialize(reader) as PropsFields;
reader.Close();
}
else
{
//можно написать вывод сообщения если файла не существует
}
}
}
}
我还在Form1.cs
文件中有一个Form
,该文件包含textBox1
, comboBox1
, checkBox1
和两个Button
。
using System;
using System.Windows.Forms;
namespace SettingWinForm
{
public partial class Form1 : Form
{
#region Settings action
Props props = new Props(); //экземпляр класса с настройками
//Запись настроек
private void writeSetting()
{
props.Fields.TextValue = textBox1.Text;
props.Fields.TextValue = comboBox1.Text;
props.Fields.BoolValue = checkBox1.Checked;
props.WriteXml();
}
private void readSetting()
{
props.ReadXml();
textBox1.Text = props.Fields.TextValue;
comboBox1.Text = props.Fields.TextValue;
checkBox1.Checked = props.Fields.BoolValue;
}
#endregion
#region Form Action
public Form1()
{
InitializeComponent();
}
#endregion
private void button1_Click_1(object sender, EventArgs e)
{
writeSetting();
}
private void button2_Click_1(object sender, EventArgs e)
{
readSetting();
}
// Очистить
private void button3_Click(object sender, EventArgs e)
{
textBox1.Text = "";
comboBox1.Text = "";
checkBox1.Checked = false;
}
}
}
如何从textBox1
读取多行文本并将其写入XML文件?
无论是单行还是多行,您所拥有的内容都可以很好地保存和读取来自textBox1的文本。 您显示的代码中的问题是,您要同时保存textBox1文本和comboBox1文本,然后再将其保存到同一字段TextValue
。 您正在用第二个值覆盖第一个值。
您需要为comboBox文本创建一个新的文本字段(即TextValue2
)。 或者,如果不可编辑,则将comboBox索引值存储到DecimalValue
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.