实现DataGridView行的拖动,即实现行的顺序交换
时间: 2024-01-21 13:16:40 浏览: 277
可以通过以下步骤实现DataGridView行的拖动:
1. 首先,需要设置DataGridView的AllowDrop属性为True,以允许拖放操作。
2. 在DataGridView的MouseDown事件中,判断鼠标左键是否按下,并获取当前鼠标所在的行。
3. 在DataGridView的MouseMove事件中,判断当前鼠标是否处于拖放状态,并将所选行的数据保存到一个变量中。
4. 在DataGridView的DragOver事件中,判断拖放目标是否为DataGridView,并将拖放效果设置为移动。
5. 在DataGridView的DragDrop事件中,获取拖放目标行的位置,并将所选行的数据插入到该位置。
以下是一个示例代码:
```csharp
private int rowIndex = -1;
private DataGridViewRow dragRow;
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
rowIndex = dataGridView1.HitTest(e.X, e.Y).RowIndex;
if (rowIndex != -1)
{
dragRow = dataGridView1.Rows[rowIndex];
dataGridView1.DoDragDrop(dragRow, DragDropEffects.Move);
}
}
}
private void dataGridView1_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void dataGridView1_DragDrop(object sender, DragEventArgs e)
{
int targetIndex = dataGridView1.HitTest(dataGridView1.PointToClient(new Point(e.X, e.Y))).RowIndex;
if (targetIndex != -1)
{
DataGridViewRow targetRow = dataGridView1.Rows[targetIndex];
if (dragRow != null && targetRow != null)
{
dataGridView1.Rows.Remove(dragRow);
dataGridView1.Rows.Insert(targetIndex, dragRow);
}
}
}
```
阅读全文