Реализация компонента карточки с обработчиками событий

В данном примере, предполагается реализовать для компонента карточки обработчики событий инициализации и закрытия карточки. Предполагается, что интерфейс пользователя был или будет реализован.

using System;
using System.Windows.Forms;
using DocsVision.Platform.ObjectManager;
using DocsVision.Platform.WinForms;
using DocsVision.Platform.WinForms.DataSource;
using DocsVision.Platform.CardHost;

namespace DocsVision.Test
{
    public sealed partial class TestCard : CardControl
    {
        private bool isReadOnly;
        private bool isChanged;

        public TestCard() { }

        protected override void OnCardInitialized(EventArgs e) (1)
        {
            base.OnCardInitialized(e);
            InitializeComponent();
        }

        protected override void OnCardActivated(CardActivatedEventArgs e) (2)
        {
            base.OnCardActivated(e);

            isReadOnly = (e.ActivateMode != ActivateMode.Edit);
            isChanged = ((e.ActivateFlags & ActivateFlags.New) = ActivateFlags.New); (3)
        }

        protected override void OnCardClosing(CardClosingEventArgs e) (4)
        {
            base.OnCardClosing(e);

            if (!isReadOnly && isChanged) (5)
            {
                e.ActionFlags = ActionFlags.None;
                MessageResult result = ShowMessage("Сохранить изменения?", "Карточка", null,
                    MessageType.Question, MessageButtons.YesNoCancel);

                switch (result)
                {
                    case MessageResult.Yes:
                        e.ActionFlags = ActionFlags.ContinueAction | ActionFlags.CommittedData;
                        break;

                    case MessageResult.No:
                        e.ActionFlags = ActionFlags.ContinueAction;
                        break;

                    default:
                        break;
                }
            }
        }
    }
}
1 Инициируется после создания компонента карточки, и передачи ей актуальных данных..
2 Инициируется после активации компонента карточки Windows-клиентом.
3 Проверка режим редактирования, либо чтения.
4 Возникает до закрытия пользовательского интерфейса карточки.
5 Карточка будет сохранять данные только при ActivateMode.Edit и наличии изменений.