private void Settings_FormClosing(object sender, FormClosingEventArgs e) { string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()"; try { if (_dirty) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Do you wish to save your changes?"); sb.AppendLine(" Click 'Yes' to save your changes and exit."); sb.AppendLine(" Click 'No' to discard your changes and exit."); sb.AppendLine(" Click 'Cancel' to return to the form."); DialogResult dr = UserInteractions.AskUserYesNoCancel(sb.ToString()); switch (dr) { case DialogResult.Cancel: e.Cancel = true; break; case DialogResult.Yes: SaveChanges(); DialogResult = DialogResult.OK; break; case DialogResult.No: DialogResult = DialogResult.Cancel; break; } } } catch (Exception ex) { new ReportError(Telemetry, TopLeft, module, ex).ShowDialog(); } }
private void EditorHost_FormClosing(object sender, FormClosingEventArgs e) { if (DialogResult != DialogResult.OK && e.CloseReason == CloseReason.UserClosing) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Do you wish to save your changes?"); sb.AppendLine(" Click 'Yes' to save your changes and exit."); sb.AppendLine(" Click 'No' to discard your changes and exit."); sb.AppendLine(" Click 'Cancel' to return to the form."); CMLConverter cc = new CMLConverter(); switch (_editorType) { case "ACME": if (elementHost1.Child is Editor acmeEditor && acmeEditor.IsDirty) { DialogResult dr = UserInteractions.AskUserYesNoCancel(sb.ToString()); switch (dr) { case DialogResult.Cancel: e.Cancel = true; break; case DialogResult.Yes: DialogResult = DialogResult.OK; var model = acmeEditor.EditedModel; model.RescaleForCml(); // Replace any temporary Ids which are Guids model.ReLabelGuids(); OutputValue = cc.Export(model); Hide(); break; case DialogResult.No: break; } } break; case "LABELS": if (elementHost1.Child is LabelsEditor labelsEditor && labelsEditor.IsDirty) { DialogResult dr = UserInteractions.AskUserYesNoCancel(sb.ToString()); switch (dr) { case DialogResult.Cancel: e.Cancel = true; break; case DialogResult.Yes: DialogResult = DialogResult.OK; OutputValue = cc.Export(labelsEditor.EditedModel); Hide(); break; case DialogResult.No: break; } } break; default: if (elementHost1.Child is CmlEditor editor && editor.IsDirty) { DialogResult dr = UserInteractions.AskUserYesNoCancel(sb.ToString()); switch (dr) { case DialogResult.Cancel: e.Cancel = true; break; case DialogResult.Yes: DialogResult = DialogResult.OK; OutputValue = cc.Export(editor.EditedModel); Hide(); break; case DialogResult.No: break; } } break; } } }