protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            if (SnapshotHasChanges())
            {
                var result = MessageBox.Show(@"Сохранить изменения в базу данных?", @"Внимание",
                                             MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
                switch (result)
                {
                case DialogResult.Yes:
                    SaveRecord();
                    break;

                case DialogResult.No:
                    CancelRecord();
                    break;

                default:
                    e.Cancel = true;
                    return;
                }
            }
            _softLicDocTypes.Select().RowChanged  -= SoftLicDocTypesViewport_RowChanged;
            _softLicDocTypes.Select().RowDeleting -= SoftLicDocTypesViewport_RowDeleting;
            _softLicDocTypes.Select().RowDeleted  -= SoftLicDocTypesViewport_RowDeleted;
            base.OnClosing(e);
        }
        public override void LoadData()
        {
            dataGridView.AutoGenerateColumns = false;
            DockAreas        = WeifenLuo.WinFormsUI.Docking.DockAreas.Document;
            _softLicDocTypes = SoftLicDocTypesDataModel.GetInstance();

            //Ожидаем дозагрузки данных, если это необходимо
            _softLicDocTypes.Select();

            _vSoftLicDocTypes = new BindingSource
            {
                DataMember = "SoftLicDocTypes",
                DataSource = DataSetManager.DataSet
            };

            //Инициируем колонки snapshot-модели
            for (var i = 0; i < _softLicDocTypes.Select().Columns.Count; i++)
            {
                _snapshotSoftLicDocTypes.Columns.Add(new DataColumn(
                                                         _softLicDocTypes.Select().Columns[i].ColumnName, _softLicDocTypes.Select().Columns[i].DataType));
            }
            //Загружаем данные snapshot-модели из original-view
            for (var i = 0; i < _vSoftLicDocTypes.Count; i++)
            {
                _snapshotSoftLicDocTypes.Rows.Add(DataRowViewToArray(((DataRowView)_vSoftLicDocTypes[i])));
            }
            _vSnapshotSoftLicDocTypes = new BindingSource {
                DataSource = _snapshotSoftLicDocTypes
            };
            _vSnapshotSoftLicDocTypes.CurrentItemChanged += v_snapshotSoftLicTypes_CurrentItemChanged;

            dataGridView.DataSource           = _vSnapshotSoftLicDocTypes;
            idSoftLicDocType.DataPropertyName = "ID DocType";
            softLicDocType.DataPropertyName   = "DocType";

            dataGridView.DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;

            dataGridView.CellValidated += dataGridView_CellValidated;
            //События изменения данных для проверки соответствия реальным данным в модели
            dataGridView.CellValueChanged += dataGridView_CellValueChanged;
            //Синхронизация данных исходные->текущие
            _softLicDocTypes.Select().RowChanged  += SoftLicDocTypesViewport_RowChanged;
            _softLicDocTypes.Select().RowDeleting += SoftLicDocTypesViewport_RowDeleting;
            _softLicDocTypes.Select().RowDeleted  += SoftLicDocTypesViewport_RowDeleted;
        }