如何在拖放过程中更改鼠标光标
本文关键字:鼠标 光标 过程中 拖放 | 更新日期: 2023-09-27 18:11:04
Background:我有一个c# winforms应用程序。我拖动信息从一个数据视图到另一个。对于目标网格上的拖放事件,我有以下代码:
private void grid_DragOver(object sender, DragEventArgs e)
{
if(e.Data.GetDataPresent(typeof(SelectedRecordsCollection)))
{
e.Effect = DragDropEffects.Move;
}
}
我想限制仅当鼠标悬停在特定行(例如,索引号为奇数的行)上时才允许拖放。目前,我限制了在拖放事件中实际添加到目标网格中的内容。但是,由于上面的代码,只要鼠标悬停在目标控件上的任何位置,光标就会变为移动图标。
问题:我如何使光标是一个"游标"?在目标网格上到处都没有"图标",除非将其设置为移动图标,以便当鼠标位于具有奇数索引的行上时?
谢谢。
编辑: Aseem的解决方案最终为我工作。
使用HitTest获取行索引。试试这个,虽然没有测试-
private void grid_DragOver(object sender, DragEventArgs e)
{
// Get the row index of the item the mouse is below.
Point clientPoint = dataGridView1.PointToClient(new Point(e.X, e.Y));
DataGridView.HitTestInfo hit = dataGridView1.HitTest(clientPoint.X, clientPoint.Y);
if (hit.Type == DataGridViewHitTestType.Cell) {
e.Effect = (hit.RowIndex%2 == 0) //move when odd index, else none
? DragDropEffects.None
: DragDropEffects.Move;
}
}