private void MethodParametersGrid_DragDrop(object sender, DragEventArgs e) { var clientPoint = MethodParametersGrid.PointToClient(new Point(e.X, e.Y)); if (e.Effect == DragDropEffects.Move && _newRowIndex != -1) { var rowIndexOfItemUnderMouse = MethodParametersGrid.HitTest(clientPoint.X, clientPoint.Y).RowIndex; if (rowIndexOfItemUnderMouse < 0) { if (clientPoint.Y < _startPoint.Y) { rowIndexOfItemUnderMouse = 0; } else { rowIndexOfItemUnderMouse = Parameters.Count - 1; } } var tmp = Parameters.ElementAt(_newRowIndex); Parameters.RemoveAt(_newRowIndex); Parameters.Insert(rowIndexOfItemUnderMouse, tmp); ReselectParameter(); } }
private void ReselectParameter() { MethodParametersGrid.Refresh(); MethodParametersGrid.Rows .Cast <DataGridViewRow>() .Single(row => row.DataBoundItem == _selectedItem).Selected = true; SelectionChanged(); }
private void MethodParametersGrid_MouseMove(object sender, MouseEventArgs e) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left && _dragBoxFromMouseDown != Rectangle.Empty && !_dragBoxFromMouseDown.Contains(e.X, e.Y)) { var dropEffect = MethodParametersGrid.DoDragDrop( MethodParametersGrid.Rows[_newRowIndex], DragDropEffects.Move); } }
private void MethodParametersGrid_MouseDown(object sender, MouseEventArgs e) { _newRowIndex = MethodParametersGrid.HitTest(e.X, e.Y).RowIndex; if (_newRowIndex == -1) { _dragBoxFromMouseDown = Rectangle.Empty; return; } _startPoint = new Point(e.X, e.Y); AdjustDragRectangle(e, SystemInformation.DragSize); }