Click here to Skip to main content
15,900,815 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I used this code but not getting to drag and drop rows in datagridview


private Rectangle dragBoxFromMouseDown;
        private int rowIndexFromMouseDown;
        private int rowIndexOfItemUnderMouseToDrop;

private void dgvPARs_MouseMove(object sender, MouseEventArgs e)
        {


            if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
            {
                // If the mouse moves outside the rectangle, start the drag.
                if (dragBoxFromMouseDown != Rectangle.Empty &&
                    !dragBoxFromMouseDown.Contains(e.X, e.Y))
                {

                    // Proceed with the drag and drop, passing in the list item.                    
                    DragDropEffects dropEffect = dgvPARs.DoDragDrop(
                    dgvPARs.Rows[rowIndexFromMouseDown],
                    DragDropEffects.Move);
                }
            }

        }

        private void dgvPARs_MouseDown(object sender, MouseEventArgs e)
        {


            rowIndexFromMouseDown = dgvPARs.HitTest(e.X, e.Y).RowIndex;
            if (rowIndexFromMouseDown != -1)
            {
                // Remember the point where the mouse down occurred. 
                // The DragSize indicates the size that the mouse can move 
                // before a drag event should be started.                
                Size dragSize = SystemInformation.DragSize;

                // Create a rectangle using the DragSize, with the mouse position being
                // at the center of the rectangle.
                dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width / 2),
                                                               e.Y - (dragSize.Height / 2)),
                                    dragSize);
            }
            else
                // Reset the rectangle if the mouse is not over an item in the ListBox.
                dragBoxFromMouseDown = Rectangle.Empty;

        }

        private void dgvPARs_DragOver(object sender, DragEventArgs e)
        {


            e.Effect = DragDropEffects.Move;

        }

        private void dgvPARs_DragDrop(object sender, DragEventArgs e)
        {


            Point clientPoint = dgvPARs.PointToClient(new Point(e.X, e.Y));

            // Get the row index of the item the mouse is below. 
            rowIndexOfItemUnderMouseToDrop =
                dgvPARs.HitTest(clientPoint.X, clientPoint.Y).RowIndex;

            // If the drag operation was a move then remove and insert the row.
            if (e.Effect == DragDropEffects.Move)
            {
                DataGridViewRow rowToMove = e.Data.GetData(
                    typeof(DataGridViewRow)) as DataGridViewRow;
                dgvPARs.Rows.RemoveAt(rowIndexFromMouseDown);
                dgvPARs.Rows.Insert(rowIndexOfItemUnderMouseToDrop, rowToMove);

            }

        }



[Agent_Spock] Added Code block
Posted
Updated 12-Mar-14 3:57am
v2
Comments
ArunAmalraj 12-Mar-14 8:59am    
http://social.msdn.microsoft.com/Forums/windows/en-US/16b0a44e-35a0-4bc8-9ccd-ec2c62c95a55/select-and-drag-a-datagridview-row-with-a-single-click?forum=winforms

1 solution

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900