2012-03-05 9 views
1

メモ帳を作成しようとしていますが、「キャンセル」をクリックしたかどうかはどのようにわかりますか?あなたはあなたのメインフォームためDialogResultプロパティをチェックしているC#でテキストファイルを保存する

private void SaveAsItem_Click(object sender, EventArgs e) 
{ 
    saveFileDialog1.FileName = "untitled"; 
    saveFileDialog1.Filter = "Text (*.txt)|*.txt"; 
    saveFileDialog1.ShowDialog(); 
    System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(saveFileDialog1.FileName); 
    SaveFile.WriteLine(richTextBox1.Text); 
    SaveFile.Close(); 
    if (DialogResult == DialogResult.Cancel) 
    { 
     richTextBox1.Text = "CANCEL"; 
     issaved = false; 
    } 
    else 
    { 
     issaved = true; 
    } 
} 

答えて

4

、それはあなたがチェックしたい子フォームです:私のコードは動作しません。私は上記の行っているように...

var dr = saveFileDialog1.ShowDialog(); 
if(dr == DialogResult.OK) 
{ 
    using(var SaveFile = new StreamWriter(saveFileDialog1.FileName)) 
    { 
     SaveFile.WriteLine(richTextBox1.Text); 
     issaved = true; 
    } 
} 
else // cancel (or something else) 
{ 
    richTextBox1.Text = "CANCEL"; 
    issaved = false;  
} 

また、あなたはusingブロックであなたのStreamWriterをラップする必要があります。例外が発生した場合、コードはファイルを閉じることができません。 usingブロックはtry/finallyブロックの構文糖で、finally部分のDispose()(これはClose()を呼び出します)ブロックを呼び出します。

0

ダイアログの結果を確認する前にファイルを作成しています。 SaveFile変数ビットを "issaved = true"ブロックに移動します。

[編集]そして、他の人が言ったように、ダイアログの結果を確認し、適切に

1
DialogResult res = saveFileDialog1.ShowDialog(); 
if (res == DialogResult.Cancel) { 
    // user cancelled 
} 
else { 
    // Write file to disk using the filename chosen by user 
} 
関連する問題