2011-07-07 10 views
2

これは本当にイライラしています。私はCシャープに慣れているので、援助を探しています。私の保存/名前を付けて保存するのは完全にfubarです。本当にC#Windowsフォーム:保存して苦情として保存

つの質問:私は名前を付けて保存]ダイアログが飛び出ることなく、既存のファイルに変更を保存するにはどうすればよい

?私が保存をクリックすると、保存されたダイアログがポップアップして保存します。その後、いくつかの変更を行い、もう一度[保存]をクリックすると、すでに与えられた名前にファイルを保存するのではなく、ダイアログが表示されます。

[名前を付けて保存]ダイアログに完全パスではなくファイル名を表示するにはどうすればよいですか?ファイル名:C:¥Users¥username¥desktop¥save¥filename.xml

これはMainForm.csにあります。

private void biFileSave_Click(object sender, EventArgs e) 
    { 
     // Save diagram 
     EditorForm editForm = this.ActiveDiagramForm; 
     if (editForm != null) 
     { 
      if (!editForm.HasFileName) 
      { 
       if (this.saveEditorDialog.ShowDialog(this) == DialogResult.OK) 
       { 
        this.ActiveDiagram.SaveSoap(this.saveEditorDialog.FileName); 
       } 
      } 
      else 
      { 
       this.ActiveDiagram.SaveSoap(this.saveEditorDialog.FileName); 
      } 
     } 

private void biFileSaveAs_Click(object sender, EventArgs e) 
    { 
     // Save As diagram 
     EditorForm editForm = this.ActiveDiagramForm; 
     if (editForm != null) 
     { 
      if (editForm.HasFileName) 
      { 
       this.saveEditorDialog.FileName = editForm.FileName; 
      } 
      if (this.saveEditorDialog.ShowDialog(this) == DialogResult.OK) 
      { 
       this.ActiveDiagram.SaveSoap(this.saveEditorDialog.FileName); 
       string strFileName = this.saveEditorDialog.FileName; 

      } 

     } 
    } 

これはEditForm.cs

public string FileName 
    { 
     get 
     { 
      return this.fileName; 
     } 
     set 
     { 
      this.fileName = value; 
      this.Text = Path.GetFileNameWithoutExtension(this.fileName); 
     } 
    } 

    public bool HasFileName 
    { 
     get 
     { 
      return (this.fileName != null && this.fileName.Length > 0); 
     } 
    } 

EDITである:

がこんなに早く、この上で私を助けてくれてありがとう!私の保存は今のところ期待どおりに動作しますが、Save As(上記のコード)では奇妙な問題が発生しました。

私が保存したファイル(test.xml)を開くと、名前を付けて保存(名前はtest2.xml)され、新しいファイルに保存されます。しかし、再度そのtest.xmlを開き、変更を加えてSaveをクリックすると、その変更がtest2.xmlに保存されます。非常に奇妙な...任意のアイデア?

+0

スクリーンショットやコメントをコードに追加して、起こりたくないことを説明してください。 – ESRogs

+0

私は画像を投稿することはできませんが、私は最初の質問を編集多分役立つだろうStackoverflowに新しいですから? – jonalodev

+0

editForm.FileName = this.saveEditorDialog.FileNameを追加します。 SaveAsメソッドにも行を追加します。 – sdcoder

答えて

2

ここで、コードはFileNameに設定されていますか?あなたが投稿したサンプルから、私はそれがどこに設定されて表示されませんが、おそらくそれは他の場所です。これは動作可能性があります

private void biFileSave_Click(object sender, EventArgs e) 
    { 
     // Save diagram 
     EditorForm editForm = this.ActiveDiagramForm; 
     if (editForm != null) 
     { 
      if (!editForm.HasFileName) 
      { 
       if (this.saveEditorDialog.ShowDialog(this) == DialogResult.OK) 
       { 
        this.ActiveDiagram.SaveSoap(this.saveEditorDialog.FileName); 
        editForm.FileName = this.saveEditorDialog.FileName; 
       } 
      } 
      else 
      { 
       this.ActiveDiagram.SaveSoap(this.saveEditorDialog.FileName); 
      } 
     } 
+0

あなたの応答に感謝します。しかし、これは私がボルケーにした名前を付けて保存すると別の問題を引き起こします:)。あなたの質問に私の編集でも答えます。 – jonalodev

1

1)保存dialog boxは、単にユーザーが保存したいファイルのパスを返します。このパスを使用すると、保存機能を実行できます。現在のドキュメントに保存する場合は、ダイアログボックスをスキップして、選択したパスのキャッシュバージョンで保存機能を実行するだけです。ユーザーが最初に名前を付けて保存]ダイアログボックスを開くと、ユーザーが選択したパスでその変数を埋める、

string currentFilePath = ""; 

:たとえば

は、フォームで、変数を持っています。 (代わりにsave asの)ユーザーが保存し、次回、チェックを実行します。

if(!String.IsNullOrEmpty(currentFilePath)) 
    //save method using currentFilePath as the path to save to 

2)あなたはFileNameどこかに設定する必要があります。 FileNamePath.GetFileNameを使用すると、名前と拡張子を取得できます。

関連する問題