private void panel2_DragEnter(object sender, DragEventArgs e) { if (!e.Data.GetDataPresent(typeof(MatrixGrid))) { return; } var grid = (MatrixGrid)e.Data.GetData(typeof(MatrixGrid)); var t = grid.side; if (sender == workingPanelLeft) { if (leftNotNull) { OperationController <int> .DeleteArgument(this, WorkingPanelSide.Left); } leftNotNull = true; OperationController <int> .ExecuteDragDrop(WorkingPanelSide.Left, grid, this); } else if (sender == workingPanelRight) { if (rightNotNull) { OperationController <int> .DeleteArgument(this, WorkingPanelSide.Right); } rightNotNull = true; OperationController <int> .ExecuteDragDrop(WorkingPanelSide.Right, grid, this); } else if (sender == MatrixController <int> .panel) { MatrixController <int> .ExecuteDragDrop(grid); } MatrixController <int> .panel.AllowDrop = true; workingPanelLeft.AllowDrop = true; workingPanelRight.AllowDrop = true; resultPanel.AllowDrop = true; argumentsChanged.Invoke(this, null); }