设置Cursor.Current在拖放帮助程序类中无效

时间:2017-01-04 18:40:04

标签: c# winforms

我有一个winforms应用程序,允许在ListView之间拖放。为了整个应用程序的一致性,我创建了一个DragDropHelper类来处理订阅ItemDrag,DragOver,GiveFeedback和DragDrop事件。除了在GiveFeedback事件中设置自定义光标外,该功能正常工作。

我的DragDropHelper.GiveFeedback事件处理程序非常基本(请记住,此代码位于DragDropHelper类中):

public void GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
    if (mDragCursor == null) return;

    // We want our own icon as the cursor
    e.UseDefaultCursors = false;
    Cursor.Current = this.mDragCursor;            
}

我已经确认正在触发GiveFeedback事件,并且正在执行Cursor.Current行,但它对Current.Cursor值没有影响。好像系统忽略了我。

现在,如果我将相同的代码复制/粘贴到我的Form.cs代码本身,它可以正常工作。所以我的问题是:你可以将拖放操作包装在一个帮助器类中,你可以从这样的类中设置Cursor.Current吗?

请注意,我也尝试在GiveFeedback处理程序中设置ListView.Cursor,但无济于事。

1 个答案:

答案 0 :(得分:-1)

您设置了e.Effects属性:

e.Effect = DragDropEffects.Copy;