using DesktopTools.Helpers; using ModuleTools.Enums; using System; using System.Windows.Forms; namespace DesktopTools.Controls { public abstract partial class AbstractControlViewEntityElement : UserControl { /// /// Признак налиичия изменений /// protected bool _haveChages = false; /// /// Событие, вызываемое при закрытии контрола /// protected event Action CloseEvent; /// /// Событие, вызываемое при закрытии контрола /// public event Action CloseEventAdd { add { CloseEvent += value; } remove { CloseEvent -= value; } } /// /// Открытие формы /// public abstract void Open(Guid? id); /// /// Закрытие формы /// public void Close() { if(_haveChages && DialogHelper.MessageQuestion("Имеется несохраненные данные, вы действительно хотите закрыть элемент?", "Закрытие элемента") == DialogResult.Yes) { if (!Save()) { return; } } CloseEvent?.Invoke(ControlId); Form?.Close(); Dispose(); } protected abstract bool Save(); /// /// Установка флага, что есть изменения /// protected void ValueChange() => _haveChages = true; /// /// Идентификатор контрола /// public Guid ControlId { get; protected set; } /// /// Идентификатор элемента с которым идет раота при редактировании /// public Guid? ElementId { get; protected set; } /// /// Идентификатор родителського элемента /// public Guid? ParentEleemtId { get; protected set; } /// /// Заголовок контрола /// public string Title { get; protected set; } /// /// Порядок контрола в меню /// public int Order { get; protected set; } /// /// Операция в системе /// public AccessOperation AccessOperation { get; protected set; } /// /// Форма в которой открыт контрол /// public Form Form { get; set; } /// /// Констркутор /// public AbstractControlViewEntityElement() { InitializeComponent(); } } }