2013-03-09 135 views
0

我有從塊建立這樣的XML文件:如何修改自定義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> 

我的根元素(名爲選項)由這些塊中的六個。我的 <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(); 
     } 

它擁有一支以獲取值,分給更新的方法,但如果任何人有一個更好的主意,這讓我很高興。 :)

+0

所以你真的有什麼問題..如果字體大小沒有價值會發生什麼。這會影響屏幕分辨率>?如果聽起來像你需要創建一個靜態的默認值,如果字體大小是空的 – MethodMan 2013-03-09 20:41:50

+0

如果它是空的,然後表單不會得到他們的W和H值。如果這意味着他們將擁有在視覺工作室中設置的基本分辨率,那麼我沒有問題。 – NeverJr 2013-03-09 20:45:13

+0

那麼你能澄清一下實際問題,因爲你說了一些關於''的內容嗎? – MethodMan 2013-03-09 20:47:54

回答

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。