Cell _lastCell; // была выбрана в прошлый раз /// <summary> /// Перемещение указателя мыши /// </summary> /// <param name="location">Позиция курсора</param> public void MouseMove(Point location) { if (_game.WinPlayer != WinPlayer.Game) { return; } var address = GetCellAddress(location); // если под курсором найдена разрешённая ячейка if (GetCell(location, out Cell cell) && cell.State != State.Prohibited) { if (_game.DisableNotOrderedMove()) { return; } // и эта ячейка другая if (cell != _lastCell) { // если уже была выбрана другая ячейка if (_lastCell != null) { LeaveCell(_lastCell); } _lastCell = cell; // запоминаем выбранную ячейку // пытаемся выбрать эту ячейку EnterCell(cell); } } else if (_lastCell != null) { // покидаем ячейку LeaveCell(_lastCell); _lastCell = null; } if (_down) { _moveRect.Location = new Point(location.X - _downOffset.X, location.Y - _downOffset.Y); } }