这是我的XML文件的样子。
$('.viewed[style="background:#F9F0D5"]').remove();
我实际上要做的是遍历表单中的每个控件并将Size和Location属性保存在XML文件中。 <PictureBoxes>
<P14040105>
<SizeWidth>100</SizeWidth>
<SizeHeight>114</SizeHeight>
<locationX>235</locationX>
<locationY>141</locationY>
</P14040105>
<P13100105>
<SizeWidth>100</SizeWidth>
<SizeHeight>114</SizeHeight>
<locationX>580</locationX>
<locationY>274</locationY>
</P13100105>
</PictureBoxes>
&gt;节点实际上是我的图片框的名称,我也需要使用该名称。
创建XML之后,我想尝试使用XML文件再次在表单上创建图片框。所以我需要的是获取<P...
节点的名称和子节点的值。
答案 0 :(得分:1)
您需要查看FormLoad和FormClosing方法,以便从/向xml文件中加载和分别保存数据。
在FormLoad
方法中循环浏览PictureBoxes
元素的子元素,并为每个元素创建一个PictureBox
并从xml数据中设置它的值,如下所示:
protected override OnLoad(EventArgs e)
{
base.OnLoad(e);
var doc = XDocument.Load("path/to/xml/file");
foreach(var element in doc.Descendant("PictureBoxes").Elements())
{
var pb = new PictureBox();
pb.Name = element.Name.LocalName;
pb.Size.Width = Convert.ToInt32(element.Element("SizeWidth").Value));
// other properties here
this.Controls.Add(pb);
}
}
在FormClosing
做相反的事情 - 迭代图片框并将属性保存在xml中:
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
var doc = new XDocument();
doc.Add(new XElement("PictureBoxes",
this.Controls.Where(c => c.GetType() == typeof(PictureBox))
.Select(pb => new XElement(pb.Name,
new XElement("SizeWidth", pb.Size.Width),
new XElement("location", pb.Location.X)))));
doc.Save("path/to/xml/file");
}