2012-05-06 2 views
0

私はXMLファイルの保存/読み込みでWindowsフォームを取得しており、保存/ロードする場所をユーザーに尋ねます。私の問題は、ストリームリーダーが指定していない場所からファイルをロードするために、このメソッドを変更する方法を知らないことです。WindowsフォームXMLのSerilization Loadダイアログ

以下のコードは、私のボタンとLoadValuesメソッドです。

private void Edittask_loadbuttonClick(
    object sender, EventArgs e) 
{ 
    Stream myStream = null; 
    var sFile1 = new OpenFileDialog(); 

    sFile1.InitialDirectory = "c:\\"; 
    sFile1.Filter = "xml files (*.xml)|*.xml"; 
    sFile1.FilterIndex = 2; 
    sFile1.RestoreDirectory = true; 

    if (sFile1.ShowDialog() == DialogResult.OK) 
    { 
     try 
     { 
      if ((myStream = sFile1.OpenFile()) != null) 
      { 
       using (myStream) 
       { 
        var v = LoadValues(); 
        this.load_task1_name.Text = 
         v.task1_name; 
        this.load_task1_desc.Text = 
         v.task1_desc; 
        this.load_task1_date.Value = 
         v.task1_date; 
        this.load_checkbox.Checked = 
         v.task1_checkbox; 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(
       "Error: Could not read file from disk. Original error: " + 
       ex.Message); 
     } 
    } 
} 

public Values LoadValues() 
{ 
    var serializer = new XmlSerializer(typeof (Values)); 
    using (
     TextReader textReader = new StreamReader(
            "E:\\hello.xml") 
    ) 
    { 
     return 
      (Values) serializer.Deserialize(textReader); 
    } 
} 

答えて

1

私はあなたのStreamReaderを構築するためにLoadValuesにOpenFileDialogからのストリーム(...)を渡し、それを使用します:

public Values LoadValues(Stream stream) 
{ 
    XmlSerializer serializer = new XmlSerializer(typeof(Values)); 
    using (TextReader textReader = new StreamReader(stream)) 
    { 
     return (Values)serializer.Deserialize(textReader); 
    } 
} 

if ((myStream = sFile1.OpenFile()) != null) 
{ 
    using (myStream) 
    { 
     Values v = LoadValues(myStream); 
     ... 
    } 
} 
+1

素晴らしいを!働いてくれた人:Dありがとう! –

+0

うれしい私は助けることができます。答えがあなたの問題を解決するなら、あなたはそれを回答としてマークし、回答者が評判のポイントを得るのに役立ちます。 – TheEvilPenguin

0

Streamを関数に渡す必要があります。

関連する問題