/// <summary> /// Вызывает метод провердки введенных данных всех контролов /// </summary> /// <param name="control"></param> /// <returns></returns> private bool CheckData(Control control) { if (control == null || control.Controls == null) { return(true); } // Просматриваем до первой "провалившейся" проверки foreach (Control c in control.Controls) { EditObjectControl cc = c as EditObjectControl; if (cc != null) { if (!cc.CheckData()) { return(false); } else // Рекурсивно просматриваем объекты панели например if (!CheckData(c)) { return(false); } } } // Все проверки завершились успешно return(true); }
/// <summary> /// Когда контрол был удален, мы должны отписаться от его событий /// </summary> /// <param name="e"></param> protected override void OnControlRemoved(ControlEventArgs e) { EditObjectControl c = e.Control as EditObjectControl; if (c != null) { c.ControlModified -= EditObjectControl_ControlModified; } }
/// <summary> /// Диалог сам обрабатывает контролы EdiObjectControl /// </summary> /// <param name="e"></param> protected override void OnControlAdded(ControlEventArgs e) { EditObjectControl c = e.Control as EditObjectControl; if (c != null) { c.ControlModified += new ControlEventHandler(EditObjectControl_ControlModified); } }
/// <summary> /// Изменить объект всем контролам /// </summary> /// <param name="control"></param> private void ChangeObject(Control control) { if (control == null || control.Controls == null) { return; } // foreach (Control c in control.Controls) { EditObjectControl cc = c as EditObjectControl; if (cc != null) { cc.AttachedObject = _AttachedObject; } else // Рекурсивно просматриваем объекты панели например { ChangeObject(c); } } }
/// <summary> /// Вызывает метод ApplyChanges у каждого контрола /// </summary> /// <param name="control"></param> /// <returns></returns> private void ApplyChanges(Control control) { if (control == null || control.Controls == null) { return; } // Просматриваем до первой "провалившейся" проверки foreach (Control c in control.Controls) { EditObjectControl cc = c as EditObjectControl; if (cc != null) { cc.ApplyChanges(); } else // Рекурсивно просматриваем объекты панели например { ApplyChanges(c); } } }