private
void
dataGridView_DragDrop(
object
sender, DragEventArgs e)
{
// 把屏幕坐标转换成控件坐标
Point p = dataGridView.PointToClient(
new
Point(e.X, e.Y));
// 如果当前位置不是数据行
// 或者刚好是源数据行的下一行(本示例中假定拖放操作为拖放至目标行的上方)
// 则不进行任何操作
var
hitTest = dataGridView.HitTest(p.X, p.Y);
if
(hitTest.Type != DataGridViewHitTestType.Cell || hitTest.RowIndex == indexOfItemUnderMouseToDrag + 1)
return
;
indexOfItemUnderMouseToDrop = hitTest.RowIndex;
// * 执行拖放操作(执行的逻辑按实际需要)
var
tempRow = dataTable.NewRow();
tempRow .ItemArray = dataTable.Rows[indexOfItemUnderMouseToDrag].ItemArray;
dataTable.Rows.RemoveAt(indexOfItemUnderMouseToDrag);
if
(indexOfItemUnderMouseToDrag < indexOfItemUnderMouseToDrop)
indexOfItemUnderMouseToDrop--;
dataTable.Rows.InsertAt(tempRow, indexOfItemUnderMouseToDrop);
}
联系客服