/// <summary>
        /// Обработчик события нажатия клавиш. Служит для "отмены удаления"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Escape)
                this.Cursor = Cursors.Arrow;
            if (e.Key == Key.System)
                AltFlag = true;
            if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)
                CtrlFlag = true;
            if (e.Key == Key.LeftShift || e.Key == Key.RightShift)
                ShiftFlag = true;
            if (e.Key == Key.Delete)
            {
                List<int> allSelected = dataObject.get_selected_ids();
                foreach (int i in allSelected)
                {
                    MoveRelation(i, false);
                    dataObject.delete_object(i);
                    myCanvas.Children.Remove((UIElement)getChildrenById(i));
                }
                IncStatus();
            }
            if (CtrlFlag && e.Key == Key.C)
            {
                Model copy = new Model();
                copy = (Model)dataObject.DeepClone(dataObject);
                
                copy.clear_for_copy();
                Clipboard.SetData("CustomerFormat", copy);
                copy.clear();
            }
            if (CtrlFlag && e.Key == Key.X)
            {
                Model copy = new Model();
                copy = (Model)dataObject.DeepClone(dataObject);
                copy.clear_for_copy();
                Clipboard.SetData("CustomerFormat", copy);
                copy.clear();

                List<int> allSelected = dataObject.get_selected_ids();
                foreach (int i in allSelected)
                {
                    MoveRelation(i, false);
                    dataObject.delete_object(i);
                    myCanvas.Children.Remove((UIElement)getChildrenById(i));
                }
                IncStatus();

            }
            if (CtrlFlag && e.Key == Key.V)
            {
                Model CopyModel = new Model();
                if (Clipboard.ContainsData("CustomerFormat"))
                {
                    CopyModel = Clipboard.GetData("CustomerFormat") as Model;
                    CopyModel.editIds(dataObject.max_id+1);
                    
                    ResetAllSelected();
                    dataObject.reset_flags();
                    dataObject.merge(CopyModel);
                    ShowInCanvas(CopyModel);
                    List <int> newSelectedIds = dataObject.get_selected_ids();
                    foreach (int i in newSelectedIds)
                    {
                        SelectObject(getChildrenById(i));
                    }
                    IncStatus();
                }
            }
            if (CtrlFlag && e.Key == Key.A)
            {
                for (int i = 0; i < myCanvas.Children.Count; ++i)
                {
                    SelectObject(myCanvas.Children[i]);
                }
                dataObject.select_all_flags();
            }
            if (CtrlFlag && e.Key == Key.Z)
            {
                Undo();
            }
            if (CtrlFlag && e.Key == Key.Y)
            {
                Redo();
            }
        }