为什么我的SaveFileDialog再次显示如果取消
本文关键字:显示 如果 取消 我的 SaveFileDialog 为什么 | 更新日期: 2023-09-27 18:13:05
我的程序中有一个SaveFileDialog。问题是,当我点击"取消"对话框,另一个SaveFileDialog打开。但是当我在第二个SaveFileDialog上单击cancel时,会出现第三个NOT,所以它不是循环或类似的东西。我看不出是什么原因导致我的SaveFileDialog以这种奇怪的方式运行。显然,我需要解决这个问题,以便如果用户在第一个SaveFileDialog上单击cancel,它将它们返回到表单。
在我的程序中保存的代码如下:
private void SaveFile()
{
if (filepath == null)
{
SaveFileAs();
}
else
{
StreamWriter sw = new StreamWriter(filepath);
try
{
sw.WriteLine(richTextBoxPrintCtrl1.Rtf);
richTextBoxPrintCtrl1.Modified = false;
sw.Close();
lastsave.Text = "Last Saved: " + DateTime.Now.ToString();
}
catch (Exception exc)
{
MessageBox.Show("Failed to save file. 'n 'n" + exc.Message);
}
finally
{
if (sw != null) sw.Close();
}
和SaveFileAs
private void SaveFileAs()
{
SaveFileDialog sfdSaveFile = new SaveFileDialog();//Creates a new instance of the SaveFileDialog
sfdSaveFile.Title = "Save File";//The title of the SaveFileDialog window
sfdSaveFile.FileName = "Untitled";//The default filename in the SaveFileDialog window
sfdSaveFile.Filter = "Rich Text Files (*.rtf)|*.rtf|Text Document (*.txt)|*.txt";//The supported file extensions when saving
if (sfdSaveFile.ShowDialog() == DialogResult.OK)//If the condition is correct, run the lines of code
try//try to run the code
{
filepath = sfdSaveFile.FileName;//get the filepath of the file once it is saved
SaveFile();//Calls the SaveFile object
this.Text = string.Format("{0} - Basic Word Processor", Path.GetFileName(sfdSaveFile.FileName));//Set the form name
lastsave.Text = "Last Saved: " + DateTime.Now.ToString();//Writes the text to the lastsave.Text label, followed by the current date and time
richTextBoxPrintCtrl1.Modified = false;
return;
}
catch (Exception exc)//Catches any errors
{
MessageBox.Show("An error occured whilst saving. " + exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else if (sfdSaveFile.ShowDialog() == DialogResult.Cancel)
{
return;
}
else if (sfdSaveFile.ShowDialog() == DialogResult.Cancel)//If the condition is true, run the line of code
{
return;
}
如果有人能帮我确定为什么会发生这种情况,我将非常感激。
——编辑——
我忘了提到,如果用户确实浏览并保存文件,SaveFileDialog不会打开另一个SaveFileDialog。这与取消SaveFileDialog有关,这会导致问题
sfdSaveFile.ShowDialog()
打开文件对话框。如果第一次不是DialogResult.OK
,它将转到else子句并再次被调用。保存ShowDialog的结果并检查它是什么,不要每次都调用它
要做到这一点,使用这样的if/else:
DialogResult dialogResult = sfdSaveFile.ShowDialog();
if (dialogResult == DialogResult.OK)
{
}
else if (dialogResult == DialogResult.Cancel)
{
}