private void ATMLForm_Closing(object sender, CancelEventArgs e)
{
if (e.Cancel)
{
e.Cancel = false;
FormManager.RemoveActiveForm(this);
}
else
{
if (DialogResult.Cancel == DialogResult || DialogResult.Abort == DialogResult)
{
OnCanceled();
}
else if (DialogResult.OK == DialogResult)
{
try
{
bool thisValidated = Validate();
bool childrenValidated = ValidateChildren(ValidationConstraints.Enabled);
if (!thisValidated || !childrenValidated)
{
childrenValidated = ValidateChildren(ValidationConstraints.Enabled);
//Hack: need to check children again
if (!thisValidated || !childrenValidated)
{
e.Cancel = true;
UpdateAll();
ICollection <string> errorsList = ErrorManager.GatherErrorMessages(this);
if (errorsList.Count > 0)
{
ATMLErrorListBox.Show(errorsList);
}
LogManager.Debug("Form \"{0}\" Validated: {1}, Children Validated: {2}",
Text,
thisValidated,
childrenValidated);
}
else
{
OnSaved();
}
}
else
{
OnSaved();
}
}
catch (Exception err)
{
LogManager.Error(err, "An error occurred saving the form.");
e.Cancel = true;
}
e.Cancel = e.Cancel |= !_closeOnSave;
}
if (!e.Cancel)
{
if (OwnedForms.Length > 0)
{
foreach (Form ownedForm in OwnedForms)
{
LogManager.Warn(string.Format("Child Form Forced Closed: {0}", ownedForm.GetType().Name));
try
{
ownedForm.Close();
}
catch (Exception err)
{
LogManager.Debug(err);
}
}
}
else
{
FormManager.RemoveActiveForm(this);
}
}
//------------------------------------------------------------------------//
//--- If the user presses the command box X on the form when the form ---//
//--- has been opened modeless and the user has already saved the data ---//
//--- with the OK button we must set the DialogResult to something ---//
//--- other than OK so the form will close. This is because the X does ---//
//--- not set the DialogResult to a Cancel State or change it at all ---//
//--- for that matter as far as I know. ---//
//--- TODO: Need to look into setting cancel state on command X ---//
//------------------------------------------------------------------------//
if (!Modal && !_closeOnSave)
{
DialogResult = DialogResult.None;
}
}
//---------------------------------------------//
//--- Close the ATML View Form if it exists ---//
//---------------------------------------------//
if (!e.Cancel && _atmlContentform != null)
{
_atmlContentform.HideOnClose = false;
_atmlContentform.Close();
}
if (e.Cancel)
{
UpdateAll();
}
}