2011-07-12 15 views
1

は、これはちょっと奇妙で、私はできる限りそれを説明してみましょう:C#Windowsフォーム:OpenFileDialog奇妙な問題

私は新しいファイルを作成し、それを保存し、それは(のtest.xml)が正しく保存されます。 このファイルに変更を加えて保存すると、正しく保存されます(test.xmlに) このファイルを再度変更するか、[名前を付けて保存]を選択すると正しく動作します(newtest.xml)

ただし、ファイルを開いたら、ファイル(test.xml)に変更を加え、Save it is saveing(newtest.xml)をクリックします。

これは、私はそれが私がEditoFormでやっているとしなければならないと確信している。これは私のEditorForm.csに

public void OpenFile(string strFileName) 
    { 

     diagramComponent.LoadSoap(mainForm.openEditorDialog1.FileName); 
     this.FileName = mainForm.openEditorDialog1.FileName; 
     this.tabControl1.SelectedTab = DiagramTab; 

    } 

である私のMainForm.csに

  if (this.openEditorDialog1.ShowDialog(this) == DialogResult.OK && editForm != null) 
     { 


      editForm.Close();     
      editForm = new EditorForm(this); 
      editForm.OpenFile(this.openEditorDialog1.FileName); 
      editForm.Closing += new CancelEventHandler(EditorForm_Closing); 
      editForm.MdiParent = this; 
      editForm.Show(); 
     } 

private void biFileSave_Click(object sender, EventArgs e) 
{ 
if (!editForm.HasFileName) 
      { 
       if (this.saveEditorDialog1.ShowDialog(this) == DialogResult.OK) 
       { 
        this.ActiveDiagram.SaveSoap(this.saveEditorDialog1.FileName); 
        editForm.FileName = this.saveEditorDialog1.FileName; 
       } 
      } 
      else 
      { 
       this.ActiveDiagram.SaveSoap(this.saveEditorDialog1.FileName); 
      } 

ですしかし、私はそれを把握していないようです。

答えて

2
else 
{ 
    this.ActiveDiagram.SaveSoap(this.saveEditorDialog1.FileName); 

あなたが望むように見えます:

this.ActiveDiagram.SaveSoap(editForm.FileName); 
+0

私はそれを試してみるとNullReferenceException ... – jonalodev

+0

うわー、私はそれが働いていることを忘れないでください。どうもありがとうございます :) – jonalodev

1

mainForm.openEditorDialog1.FileNameとする必要があります。保存を行うフォームのFileNameプロパティを使用します。ファイルを開くときに、fileNameをmainForm.openEditorDialog1.FileNameに設定します。名前を付けて保存するときは、FileNameプロパティも設定します。この方法では、現在のファイルが変更されるたびにFileNameプロパティを適切に設定します。その後、ファイルを保存するときには、常に正しいファイル名を使用します。

要約すると、SaveAsダイアログまたはFileOpenダイアログの使用直後に、.FileNameプロパティを使用するだけです。

+0

うーん...私はあなたが正しいと思います。しかし、私はそれをやろうとしています(上記の保存方法を追加しました)。私のMainFormから正しいFileNameを呼び出すにはどうすればいいですか? – jonalodev

+0

ファイル名としてEditorFormにプロパティを設定できます。その後、EditorFormで完了したら(または名前が必要なときはいつでも)、editorForm.FileNameを取得します。 –