我正在尝试写记事本,如何知道用户是否点击了“取消”?我的代码不起作用:
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;
}
}
答案 0 :(得分:4)
您正在检查主要表单的DialogResult
属性 ,但它是您要检查的子表单。所以......
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;
}
此外,您应该将StreamWriter
封装在using
块中,如上所述。如果发生异常,您的代码将无法关闭该文件。 using
块是try/finally
块的语法糖,它会在Dispose()
部分调用Close()
(进而调用finally
)。
答案 1 :(得分:1)
DialogResult res = saveFileDialog1.ShowDialog();
if (res == DialogResult.Cancel) {
// user cancelled
}
else {
// Write file to disk using the filename chosen by user
}
答案 2 :(得分:0)
在检查对话框的结果之前,您正在创建文件。将SaveFile变量位移动到“issaved = true”块。
[edit]正如其他人所说,请正确检查对话框结果