3

私は現在C#で働いてOpen fileおり、機能しています。write file私は 2 つの問題を経験しています: ユーザーがファイルを保存しているときに、保存ダイアログを終了し、何も保存されていない場合、エラーが発生します (説明については下の図を参照してください)。プログラムがこれを回避し、クラッシュしないようにするにはどうすればよいですか? ファイルが保存された後にメッセージを表示する方法はありますか?

ここに画像の説明を入力

 private void button2_Click(object sender, EventArgs e)
            {
                SaveFileDialog saveReport = new SaveFileDialog();
                saveReport.Filter = "Text Files | *.txt";
                saveReport.ShowDialog();

                StreamWriter writeFile = new StreamWriter(saveReport.FileName);
                writeFile.Write(textBox1.Text);
                writeFile.Close();

            }
4

3 に答える 3

1

ユーザーが [キャンセル] をクリックすると、ShowDialog()が返されDialogResult.Cancelます。

これは明細書で確認できますif

于 2012-09-20T02:49:34.930 に答える
1

ShowDialog呼び出しの戻り値を使用して、ユーザーが何を選択したかを判断します。

以下のコードは、ユーザーがダイアログで [OK] を選択した場合にのみ保存します。

SaveFileDialog saveReport = new SaveFileDialog();
saveReport.Filter = "Text Files | *.txt";
if (saveReport.ShowDialog() == DialogResult.OK) {
    StreamWriter writeFile = new StreamWriter(saveReport.FileName);
    writeFile.Write(textBox1.Text);
    writeFile.Close();
}

元のコードの問題は、ユーザーがダイアログでファイル名を指定しなかった場合でも、保存しようとしていたことです。

于 2012-09-20T02:51:53.153 に答える
1

次のようなことができます。

var saveReport = new SaveFileDialog();
saveReport.Filter = "Text Files | *.txt";
var result = saveReport.ShowDialog();

if(result == DialogResult.Cancel || string.IsNullOrWhiteSpace(saveReport.FileName))
    return;

using(var writer = new StreamWriter(saveReport.FileName))
{
    writer.Write(textBox1.Text);
    writer.Close();
}

MessageBox.ShowDialog("File Saved!");

原則として、FileName はnull空白または空白にはなりません。キャンセルしない限り、ダイアログはそれを防ぎますが、わかりやすくするために含めます。

于 2012-09-20T02:55:05.283 に答える