我有一个通过Windows窗体创建的XML文件,用于保存两个文本字段和两个日期时间选择器。
我想知道如何“加载”(最好通过询问用户文件的位置)这个回到我的表单中,以便可以对其进行编辑和保存。
public class Values
{
public string task1_name { get; set;}
public string task1_desc { get; set;}
public DateTime task1_date { get; set;}
public DateTime task1_time { get; set;}
}
我的表单上的保存按钮
void SavebuttonClick(object sender, EventArgs e)
{
DialogResult dialogResult = MessageBox.Show("Are you sure you want to save?",
"Save", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
Values v = new Values();
v.task1_name = this.task1_name.Text;
v.task1_desc = this.task1_desc.Text;
v.task1_date = this.task1_date.Value;
v.task1_time = this.task1_time.Value;
SaveValues(v);
}
}
第三部分
public void SaveValues(Values v)
{
XmlSerializer serializer = new XmlSerializer(typeof(Values));
using (TextWriter textWriter = new StreamWriter(@"E:\TheFile.xml"))
{
serializer.Serialize(textWriter, v);
}
}
答案 0 :(得分:0)
您可以解析xml并使用已解析的数据更新表单。 visual studio中有一个文件选择器对话框供用户选择文件。
XmlTextReader reader = new XmlTextReader ("books.xml");
while (reader.Read())
{
// code
}
答案 1 :(得分:0)
您可以将xml反序列化为对象,并使用该对象重新加载字段..
首先使用xsd.exe为该xml创建xsd。然后,您可以使用相同的exe创建类文件,并使用XmlSerializer将xml反序列化到该对象中。
答案 2 :(得分:0)
你可以这样做:
public void SomeMethod()
{
Values v = LoadValues();
this.task1_name.Text = v.task1_name;
this.task1_desc.Text = v.task1_desc;
this.task1_date.Value = v.task1_date;
this.task1_time.Value = v.task1_time;
}
public Values LoadValues()
{
XmlSerializer serializer = new XmlSerializer(typeof(Values));
using (TextReader textReader = new StreamReader(@"E:\TheFile.xml"))
{
return (Values)serializer.Deserialize(textReader);
}
}
我建议将序列化程序放在一个变量中,这样每次都不会创建它(构建一个新的XmlSerializer代价很高)
希望有所帮助