处理拖动时是否可以更改鼠标光标(来自DragOver事件)?

时间:2011-05-30 11:00:25

标签: c# .net windows winforms drag-and-drop

我们需要在用户将项目拖入我们的应用程序时向用户显示反馈。 我们的客户希望这种反馈采用自定义光标的形式。

这已经实现了拖出,使用在GiveFeedback事件处理程序中设置的自定义光标(在我们的应用程序中拖出项目时由DoDragDrop引发)。 GiveFeedbackEventArgs允许我们指定UseDefaultCursors属性 - 将此值设置为false允许我们覆盖光标。

但是,DragOver事件处理程序参数(相当于GiveFeedback)没有UseDefaultCursors属性,并且从那里更改游标没有任何影响。

示例(这没有效果):

private void browser_DragOver(object sender, DragEventArgs e) {
  Cursor.Current = Cursors.WaitCursor;
}

拖动操作源自我们的应用程序外部。 (对于应用内拖动,它使用GiveFeedback事件。

接收拖动时如何更改光标?这甚至可行/可行吗?

4 个答案:

答案 0 :(得分:2)

void Form1_GiveFeedback(object sender, GiveFeedbackEventArgs e) {
    e.UseDefaultCursors = false;
}

答案 1 :(得分:2)

是的,您必须实现COM接口(IDragSourceHelper和IDropTargetHelper)。 看看HERE

答案 2 :(得分:1)

这样就够了吗? 此代码将通过在其旁边添加[+]符号来更改鼠标指针。

private void Form_DragOver(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Copy;
}

答案 3 :(得分:-2)

我们在这里解决了一系列拖放问题:

Drag and Drop between Instances of the same Windows Forms Application

希望这会指出你正确的方向。