У меня есть событие Form_Closing, которое запрашивает пользователя, был ли файл изменен для сохранения, если были внесены изменения в файл (стандартные параметры Да / Нет / Отмена). Отмена - это когда вещи работают не так, как должны.
Если я выбираю «Файл» -> «Новый» и существует существующий файл с изменениями, меня ожидают, как и ожидалось, при выборе «Отмена» отображается новая форма вместо того, чтобы оставаться в текущей форме, и в итоге я получаю две открытые формы в один раз.
Вот код MainForm (новый файл):
if (editForm != null)
{
// Close existing Editor form
editForm.Close();
// Open new form
editForm = new EditorForm(this);
// Close Form Events
editForm.Closing += new CancelEventHandler(EditorForm_Closing);
editForm.Show();
editForm.Focus();
else
{
// Open new Editor
editForm = new EditorForm(this);
// Close Form Events
editForm.Closing += new CancelEventHandler(EditorForm_Closing);
editForm.Show();
editForm.Focus();
}
Вот мой EditForm_Closing:
if (editForm != null)
{
if (editForm.diagramComponent.Model.Modified)
{
DialogResult res = MessageBox.Show(this, "The project has been modified. Save changes?", "Save changes", MessageBoxButtons.YesNoCancel);
if (res == DialogResult.Yes)
{
if (!editForm.HasFileName)
{
if (this.saveEditorDialog1.ShowDialog(this) == DialogResult.OK)
{
this.ActiveDiagram.SaveSoap(this.saveEditorDialog1.FileName);
editForm.FileName = this.saveEditorDialog1.FileName;
}
}
else
{
this.ActiveDiagram.SaveSoap(editForm.FileName);
}
}
else if (res == DialogResult.Cancel)
{
e.Cancel = true;
}
}
Не уверен, как сделать корреляцию между событием Отмена закрытия и моим файлом -> Создать. Любая помощь очень ценится. Спасибо.
РЕДАКТИРОВАТЬ: Добавлено мое событие EditForm_Closing.