1

私はこのばかげた形で立ち往生しています...ここに私のコードがあります。ストリームライターが望む場所に保存しますが、savedialogボックスを介してユーザーが望む場所に保存すると、XMLが作成されますが、何も入力されません。それが私を巻き始めているので、誰かが見ることができますか?

void SavebuttonClick(object sender, EventArgs e)
{
    Stream myStream ;
    SaveFileDialog savefile1 = new SaveFileDialog();

    savefile1.Filter = "xml files |*.xml"  ;
    savefile1.FilterIndex = 2 ;
    savefile1.RestoreDirectory = true ;

    if(savefile1.ShowDialog() == DialogResult.OK)
    {
        if((myStream = savefile1.OpenFile()) != null)
        {
            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);
        }
        myStream.Close();   
    }
}

これはストリームライターです...

public void SaveValues(Values v)
{
    XmlSerializer serializer = new XmlSerializer(typeof(Values));
    using(TextWriter textWriter = new StreamWriter(@"E:\TheFileYouWantToStore.xml"))
    {
        serializer.Serialize(textWriter, v);
    }
...
}

編集:

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;}
}

私はこれがあなたが意図したコードだと思います、メイトを通してコーディングするのはかなり新しいです:(

4

1 に答える 1

0

シリアル化後に呼び出す必要がありますtextWriter.close();。ライターを閉じないと、ファイルに変更が適用されません。ちなみに、E:\TheFileYouWantToStore.xmlに値を書き込んでいます。保存保存メソッドはユーザーファイルを使用しません。

public void SaveValues(Values v)
{
    XmlSerializer serializer = new XmlSerializer(typeof(Values));
    using(TextWriter textWriter = new StreamWriter(@"E:\TheFileYouWantToStore.xml"))
    {
        serializer.Serialize(textWriter, v);
        textWriter.close();
    }
...
}

編集:

if(savefile1.ShowDialog() == DialogResult.OK)
{
        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(savefile1.FileName, v);
}

-

public void SaveValues(string fileName, Values v)
{
    XmlSerializer serializer = new XmlSerializer(typeof(Values));
    using(TextWriter textWriter = new StreamWriter(fileName))
    {
        serializer.Serialize(textWriter, v);
        textWriter.close();
    }
...
}
于 2012-05-03T12:19:14.253 に答える