ポイント1は本当にあなたの解決策です。
Filename
現在のドキュメントのファイル名を保持する文字列変数を保持する必要があります。新しいドキュメントを作成する場合Filename
は、 null
. Save
次に、またはをクリックSave As...
してもユーザーがダイアログをキャンセルしない場合は、結果FileDialog.FileName
をFilename
変数に格納してから、ファイルの内容を書き込みます。
Save
ユーザーがもう一度クリックするFilename
と、 に値があるかどうかを確認し、値がある場合は表示せずSaveFileDialog
、単にファイルに再度書き込みます。
コードは次のようになります。
private String _filename;
void saveToolStripMenuItem_Click()
{
if (String.IsNullOrEmpty(_filename))
{
if (ShowSaveDialog() != DialogResult.OK)
{
return;
}
}
SaveCurrentFile();
}
void saveAsToolStripMenuItem_Click()
{
if (ShowSaveDialog() != DialogResult.OK)
{
return;
}
SaveCurrentFile();
}
DialogResult ShowSaveDialog()
{
var dialog = new SaveFileDialog();
// set your path, filter, title, whatever
var result = dialog.ShowDialog();
if (result == DialogResult.OK)
{
_filename = result.FileName;
}
return result;
}
void SaveCurrentFile()
{
using (var writer = new StreamWriter(_filename))
{
// write your file
}
}