public ChooseSaveErrorResult ChooseSaveError(string fileName, string message, string dialogName, Exception exceptionGot, bool chooseLocationEnabled) { ChooseSaveErrorResult r = ChooseSaveErrorResult.Ignore; Invoke( delegate { restartlabel: using (SaveErrorChooseDialog dlg = new SaveErrorChooseDialog(fileName, message, dialogName, exceptionGot, chooseLocationEnabled)) { switch (dlg.ShowDialog(DialogOwner)) { case DialogResult.OK: // choose location: using (SaveFileDialog fdiag = new SaveFileDialog()) { fdiag.OverwritePrompt = true; fdiag.AddExtension = true; fdiag.CheckFileExists = false; fdiag.CheckPathExists = true; fdiag.Title = "Choose alternate file name"; fdiag.FileName = fileName; if (fdiag.ShowDialog() == DialogResult.OK) { r = ChooseSaveErrorResult.SaveAlternative(fdiag.FileName); break; } else { goto restartlabel; } } case DialogResult.Retry: r = ChooseSaveErrorResult.Retry; break; default: r = ChooseSaveErrorResult.Ignore; break; } } }); return r; }