私はListView間でドラッグ&ドロップできるwinformsアプリケーションを持っています。アプリケーション全体の一貫性を保つため、ItemDrag、DragOver、GiveFeedback、およびDragDropイベントの購読を処理するDragDropHelperクラスを作成しました。機能は正常に動作しますが、GiveFeedbackイベントのカスタムカーソルの設定は例外です。Cursor.Currentを設定するとドラッグ/ドロップヘルパークラスに影響しません
マイ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を設定しようとしましたが、役に立たないことに注意してください。
私はDragEnterイベントハンドラにe.Effectを設定しています。 GiveFeedbackハンドラでは、e.EffectはReadOnlyです。 – BarryE