14 Aralık 2009 Pazartesi

DataGridView Drag-Drop (Sürükle-Bırak)

Datagridview’de satırların yerlerini sürükle-bırak ile değiştirmek isterseniz, aşağıdaki 4 eventtaki (MouseMove, MouseDown, DragDrop, DragOver) değişiklikleri yapmanız yeterli olacaktır:

private Rectangle dragBoxFromMouseDown;
private int rowIndexFromMouseDown;
private int rowIndexOfItemUnderMouseToDrop;
private void datagridview1_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. 
            if (datagridview1.Rows.Count != 0)
            {
                DragDropEffects dropEffect = datagridview1.DoDragDrop(
                  datagridview1.Rows[rowIndexFromMouseDown], DragDropEffects.Move);
            }
        }
    }
}