0

私はこのようなブロックから構築された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>

これらのブロックのうち6つをルート要素(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();
        }

値を取得してアップデータメソッドに渡す順序がありますが、誰かがより良いアイデアを持っているなら、それは私をとても幸せにします。:)

4

1 に答える 1

0

DTOオブジェクトを使用して値を格納し、組み込みのシリアライザーの1つを使用して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にデータを入力します。

于 2013-03-09T21:00:45.847 に答える