6

この優れたドラッグ/ドロップ フレームワークを使用しています: http://code.google.com/p/gong-wpf-dragdrop/ A と B の 2 つのリストボックスがあります。B から A にドラッグすると、マウスが必要になります。カーソルがリストボックス A の領域内にあるとすぐに変更されます。

私はほとんどそれを手に入れました。IDropTarget インターフェイスを次のように使用します。

void IDropTarget.DragOver(DragOver drag)
{
 drag.Effects = DragDropEffects.Copy | DragDropEffects.Move;

 // some logic to determine if hovering over listbox A
 // ...

 if (hoveringOverListA)
 {
  ListBoxA.Cursor =  ((FrameworkElement) Application.Current.Resources["ListboxACursor"]).Cursor;
 }
}

唯一の問題は、カーソルをドラッグしているときに、許可されていない操作 (線が引かれた黒い円) が表示されることです。マウスを放すとすぐに、ListboxACursor が表示されます。つまり、DragOver を実行しているときにドロップするのではなく、ドロップするのを待っているように、反応が遅れているようです。

誰かがコードの何が問題なのかを知ることができれば、私はそれを大いに感謝します. 私はそれが DragDropEffects に関係しているかもしれないと感じていますが、それは主に予感です。

4

2 に答える 2

1

これは、Windows が独自のカーソルを使用してデフォルトのルック アンド フィールを確保しようとするためです。これは、既定のカーソルを明示的に無効にすることで回避できます。このチュートリアルの GiveFeedback イベントを参照してください

 private void DragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e)
 {
   e.UseDefaultCursors = e.Effect != DragDropEffects.Copy;
 }
于 2013-01-15T17:12:58.013 に答える