后台:我有一个C#winforms应用程序。我将信息从一个datagridview拖到另一个。对于我在目标网格上的拖动事件,我有以下代码:
private void grid_DragOver(object sender, DragEventArgs e)
{
if(e.Data.GetDataPresent(typeof(SelectedRecordsCollection)))
{
e.Effect = DragDropEffects.Move;
}
}
我想限制只有在鼠标悬停在特定行(例如,具有奇数索引号的行)上时才允许丢弃。我目前限制我在dragdrop事件中实际添加到目标网格的内容。但是,由于上面的代码,只要鼠标悬停在目标控件上的任何位置,我的光标就会变为“移动”图标。
问题:我如何制作光标是一个" Cursor.No"目标网格上的任何地方的图标,除了将鼠标悬停在具有奇数索引的行上时将其设置为“移动”图标?
谢谢。
编辑: Aseem的解决方案最终为我工作。
答案 0 :(得分:3)
使用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;
}
}