ドラッグは「ソース」から「ターゲット」まで発生します。 DragDropEffects.CopyとしてallowEffectsでDoDragDrop()を呼び出すと、ターゲット(DragOverイベント)にEffects = DragDropEffects.Noneを設定してドロップをキャンセルできます。Effects = DragDropEffects.Noneが設定されていてもドロップが許可されるのはなぜですか?
ただし、allowedEffectsをDragDropEffects.Moveとして設定すると、同じ状況が失敗します。 ..
void Window1_DragOver(object sender, DragEventArgs args)
{
args.Effects = DragDropEffects.None;
を行を追加してもコメントアウトし、状況を再現(DragDropEffects.Moveへ)http://jaimersamples.members.winisp.net/samples/dragdrop/drag.zip
変更ライン..
DragDrop.DoDragDrop(this.DragSource, data, DragDropEffects.Copy);
からサンプルをダウンロードするに
全体、DragSource_GiveFeedback ..
void DragSource_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
//System.Diagnostics.Debug.WriteLine("DragSource_GiveFeedback " + e.Effects.ToString());
フレームワークに何らかのバグがありますか、それとも明らかに何かを見ることができませんか?
サンプルの問題を再現する際に問題が発生しています。未修正のサンプルでは、赤いボックスをコピー先のキャンバスにドロップできません。また、DragDropEffects。*のすべてのインスタンスは既に.Moveに設定されているため、変更する必要があるコード行が不明です。その価値については、それらをすべてDragDropEffects.Copyに変更しましたが、アイテムを宛先キャンバスにドロップできませんでした。 –
私は意図した効果を表示するためにスクリーンショットを撮ることができません。マウスカーソルはスクリーンショットには含まれていませんが、私は質問を言い換えるつもりです。 サンプルは赤いボックスのドロップを実装していません。単にドラッグを開始します。私が望むのは、マウスカーソルは、ドロップが許可されているかどうかを常に示しているということです。 DragDropEffects.CopyでDoDragDrop()を呼び出し、Window1_DragOverでargs.Effects = DragDropEffects.Noneを設定すると動作します。しかし、私はDragDropEffects.MoveでDoDragDrop()を呼び出すと動作しません。 – Trainee4Life
フィードバック中にエフェクトを設定する必要はありませんか? – leppie