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

本文关键字:光标 鼠标 来自 DragOver 事件 处理 拖动 是否 | 更新日期: 2023-09-27 17:57:54

当用户将项目拖到我们的应用程序中时,我们需要向用户显示反馈。我们的客户更喜欢这种反馈以自定义光标的形式出现。

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

但是,DragOver事件处理程序参数(相当于GiveFeedback)不具有UseDefaultCursors属性,因此从此处更改光标没有任何效果。

样本(这没有影响):

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

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

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

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

void Form1_GiveFeedback(object sender, GiveFeedbackEventArgs e) {
    e.UseDefaultCursors = false;
}
是的,您必须实现COM接口(IDragSourceHelper和IDropTargetHelper)。看看这里。

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

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

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

在同一Windows窗体应用程序的实例之间拖放

希望这能为你指明正确的方向。