我有一个xml文件,它是用这样的块构建的:
<BasicOptions id="OwnCrypt">
<Font>Angsana New</Font>
<FontColor>Aquamarine</FontColor>
<FontSize>12</FontSize>
<FontStyle>Normál</FontStyle>
<BackgroundImage>Cryptonite\System\Resources\Media\Pics\grumpy.jpg</BackgroundImage>
<ImageResolution>1280 X 1024</ImageResolution>
<FormSize>1280 X 1024</FormSize>
<FormPosition>CenterParent</FormPosition>
<Opacity>70</Opacity>
</BasicOptions>
我在根元素中创建了六个这样的块(名为Options)。我有一些问题
<FormSize>
节点,因为从选项表单中它可以得到空值(这意味着我不改变它的分辨率),然后我想将<FormSize>
节点的值设置为基本分辨率形式。
这是更新程序按钮事件(如果它有帮助):
private void button1_Click(object sender, EventArgs e)
{
boxes[0] = checkBox1;
boxes[1] = checkBox2;
boxes[2] = checkBox3;
boxes[3] = checkBox4;
boxes[4] = checkBox5;
boxes[5] = checkBox6;
ArrayList al = new ArrayList();
ArrayList bl = new ArrayList();
foreach (CheckBox cb in boxes)
{
if (cb.Checked)
al.Add(cb.Text);
}
if(comboBox1.Text=="")//Betűtípus
{
bl.Add("Times New Roman");
}
else
bl.Add(comboBox1.Text);
if (comboBox2.Text == "")//Betűszín
{
bl.Add("Fekete");
}
else
bl.Add(comboBox2.Text);
bl.Add(numericUpDown1.Value.ToString());//Betűméret
if (comboBox3.Text == "")//Betűstílus
{
bl.Add("Normál");
}
else
bl.Add(comboBox3.Text);
if (comboBox4.Text == "")//háttérkép
{
bl.Add(@"Cryptonite\System\Resources\Media\Pics\grumpy.jpg");
}
else
bl.Add(comboBox4.Text);
if (comboBox5.Text == "")//háttérkép felbont
{
Xml.resRequest(al);
}
else
bl.Add(comboBox5.Text);
if (comboBox6.Text == "")//felbontás
{
Xml.resRequest(al);
}
else
bl.Add(comboBox6.Text);
if (comboBox7.Text == "")
{
bl.Add("WindowsDefault");
}
else
bl.Add(comboBox7.Text);
bl.Add(numericUpDown2.Value.ToString());
Xml.Writer(al, bl);
al.Clear();
bl.Clear();
}
它有一个获取值并提供给updater方法的命令,但是如果有人有更好的想法,这让我非常高兴。 :)
答案 0 :(得分:0)
我会使用DTO对象来存储值,并使用其中一个内置序列化程序来构成xml。 http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx
DTO类将具有可用于检测是否需要将值设置为默认值的属性。
public class Foo {
private string _bar;
public string Bar
{
get { return String.IsNullOrEmpty(_bar) ? _bar = "default value" : _bar; }
set { _bar = value; }
}
}
而不是填充ArrayList,填充DTO。