Пример #1
0
        protected virtual void ValidateEntity(FormClosingEventArgs e)
        {
            IValidate iv = Value as IValidate;

            if (iv != null)
            {
                DatErrorList eList = iv.ValidateErrors();
                if (eList != null && eList.Count > 0)
                {
                    string ErrorsMessage = "";
                    foreach (DatErrorList.DatError derr in eList)
                    {
                        ErrorsMessage += derr.Description + "\n";
                    }
                    MessageBox.Show(ErrorsMessage, "Обнаружены ошибки, сохранение невозможно", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    e.Cancel = true;
                    return;
                }

                DatErrorList wList = iv.ValidateWarnings();
                if (wList != null && wList.Count > 0)
                {
                    string ErrorsMessage = "";
                    foreach (DatErrorList.DatError derr in wList)
                    {
                        ErrorsMessage += derr.Description + "\n";
                    }
                    ErrorsMessage += "\n\nВы по прежнему хотите сохранить запись?\n";

                    DialogResult r = MessageBox.Show(ErrorsMessage, "Обнаружены замечания", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);

                    switch (r)
                    {
                    case DialogResult.Abort:
                    case DialogResult.Cancel:
                    case DialogResult.None:
                    case DialogResult.No:
                        e.Cancel = true;
                        return;

                    case DialogResult.OK:
                    case DialogResult.Retry:
                    case DialogResult.Yes:
                    case DialogResult.Ignore:
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Пример #2
0
 public void MarkErrorControls(Control ctlEntity, DatErrorList eList)
 {
     foreach (Control ctl in ctlEntity.Controls)
     {
         if (ctl is IDataMember)
         {
             DatErrorList.DatError error = eList.Find(delegate(DatErrorList.DatError de) { return(de.PropertyName == ((IDataMember)ctl).DataMember); });
             if (error != null)
             {
                 SetError(ctl, error.Description);
             }
         }
         else
         {
             MarkErrorControls(ctl, eList);
         }
     }
     Application.DoEvents();
 }
Пример #3
0
        protected override void CloseForm(FormClosingEventArgs e)
        {
            if (DialogResult == DialogResult.OK)
            {
                try
                {
                    GetEntity();
                    if (NewValue == null)
                    {
                        return;
                    }
                    if (_CanSave)
                    {
                        DatErrorList wList = NewValue.ValidateWarnings();
                        DatErrorList eList = NewValue.ValidateErrors();
                        DatErrorProvider.Clear();
                        if (eList.Count > 0)
                        {
                            string ErrorsMessage = "";
                            foreach (DatErrorList.DatError derr in eList)
                            {
                                ErrorsMessage += derr.Description + "\n";
                            }
                            MarkErrorControls(this, eList);
                            MessageBox.Show(ErrorsMessage, "Обнаружены ошибки, сохранение невозможно", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            e.Cancel = true;
                            return;
                        }

                        if (wList.Count > 0)
                        {
                            string ErrorsMessage = "";
                            foreach (DatErrorList.DatError derr in wList)
                            {
                                ErrorsMessage += derr.Description + "\n";
                            }
                            ErrorsMessage += "\n\nВы по прежнему хотите сохранить запись?\n";
                            //ErrorsMessage += "\n" + DialogResult.Yes.ToString() + " - выйти и сохранить.";
                            //ErrorsMessage += "\n" + DialogResult.No.ToString() + " - выйти, не сохраняя.";
                            //ErrorsMessage += "\n" + DialogResult.Cancel.ToString() + " - возврат к редактированию.";
                            //DialogResult r = MessageBox.Show(ErrorsMessage, "Обнаружены замечания", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button3);
                            DialogResult r = MessageBox.Show(ErrorsMessage, "Обнаружены замечания", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);

                            switch (r)
                            {
                            case DialogResult.Abort:
                            case DialogResult.Cancel:
                            case DialogResult.None:
                            case DialogResult.No:
                                e.Cancel = true;
                                return;

                            //case DialogResult.No:
                            //    e.Cancel = false;
                            //    return;
                            case DialogResult.OK:
                            case DialogResult.Retry:
                            case DialogResult.Yes:
                            case DialogResult.Ignore:
                                break;

                            default:
                                break;
                            }
                        }

                        if (NewValue is IHDWrapper)
                        {
                            ((IHDWrapper)NewValue).Save(OldValue);
                        }
                        else if (!NewValue.EqualDat(OldValue))
                        {
                            NewValue.Save();
                            //if (NewValue is IDat)
                            //    NewValue.Load(((IDat)NewValue).ID);
                        }
                    }
                    if (_OldValue != null)
                    {
                        NewValue.CopyTo(_OldValue);
                    }
                }
                catch (Exception exp)
                {
                    e.Cancel = true;
                    new ExceptionForm("Внимание", "Не удалось сохранить элемент.\nДля более подробной информации раскройте детали сообщения об ошибке.", exp, MessageBoxIcon.Error).ShowDialog();
                }
            }
            else
            {
                //GetEntity();
                //bool changed = (NewValue != null && !NewValue.EqualDat(OldValue));
                if (IsChanged)
                {
                    DialogResult res = MessageBox.Show("Данные были изменены! Сохранить?\nОтмена - продолжить редактирование.", "Внимание", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                    if (res == DialogResult.Yes)
                    {
                        this.DialogResult = DialogResult.OK;
                        CloseForm(e);
                    }
                    e.Cancel = (res == DialogResult.Cancel);
                }
            }
        }