我有一个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,但无济于事。
答案 0 :(得分:-1)
您设置了e.Effects属性:
e.Effect = DragDropEffects.Copy;