DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Drag&DropのDrop時の処理について

環境/言語:[OS : Windows 2000 Professional / 言語 : Visual Basic .NET / .NET Framework : 1.1]
分類:[.NET]

【解決したい問題】

Drag&Dropについて教えて下さい。
Drag&Dropに対応している解凍ツールなどは、Dragを開始したときには解凍せず、エクスプローラ等にDropした時点で解凍が実行されると思います。
あれは、どのように行うのでしょうか?

Drag開始時に解凍するのであれば、DoDragDropを行う前に、テンポラリに解凍して、それをDragデータとして指定すれば出来ると思うのですが、そうではなく、Dropされた時点で解凍を行いたいのです。
つまりDrag開始時には対象ファイルは存在せず、Dropされた時点で初めて対象ファイルを作成したいのですが、その様なことは可能でしょうか?

Dragされる?側では、DoDragDropでDragを開始し、返り値でその結果を知ることしかできないと思います。

DropしたときにDropされた側でDragDropイベントが呼び出される前に、解凍処理を行う必要があると思うのですが、それはどのように行えばよいのでしょうか?
> つまりDrag開始時には対象ファイルは存在せず、Dropされた時点で初めて対象ファイルを作成したいのですが、その様なことは可能でしょうか?

 少し試してみました。どうやら可能なようです。

> Dragされる?側では、DoDragDropでDragを開始し、返り値でその結果を知ることしかできないと思います。

 QueryContinueDrag イベントについて調べてみてください。

#実際にドロップされたかどうかの判定も合わせて必要になるでしょうけど。<昔の投稿ではやってなかったり(汗)
深山様

おかつです。早速のご回答有り難うございました。

>>Dragされる?側では、DoDragDropでDragを開始し、返り値でその結果を知ることしかできないと思います。
>
>  QueryContinueDrag イベントについて調べてみてください。
>
> #実際にドロップされたかどうかの判定も合わせて必要になるでしょうけど。<昔の投稿ではやってなかったり(汗)

有り難うございます。
QueryContinueDragイベント引数のQueryContinueDragEventArgs.Actionが
dropになったときに、処理を行えば良いと理解したのですが、正解でしょうか?

ただ、仰るようにドロップされたかどうかが問題ですね…。
ドロップ不可のターゲットでドロップ?したときも同じように、Actionがdropでイベントが発生してしまうようです。

QueryContinueDragイベントでDragDropEffectsが取得出来れば、いいのかなと思うのですが、いい方法が思い浮かびません…

何かヒントがありましたら、よろしくお願いします。
> QueryContinueDragイベント引数のQueryContinueDragEventArgs.Actionが
> dropになったときに、処理を行えば良いと理解したのですが、正解でしょうか?

 はい、正解です(^^)
#と言っても『私はそういう意図で発言した』というだけで、適切な内容かどうかは定かではありませんけど(^_^;)


> ただ、仰るようにドロップされたかどうかが問題ですね…。
> ドロップ不可のターゲットでドロップ?したときも同じように、Actionがdropでイベントが発生してしまうようです。

 そうなんですよね。以前触ったときはそのことに気づいてませんでした(///)


> QueryContinueDragイベントでDragDropEffectsが取得出来れば、いいのかなと思うのですが、いい方法が思い浮かびません…
> 何かヒントがありましたら、よろしくお願いします。

 私に思いついたのは GiveFeedback イベントを用いる方法でした。そこで取得した DragDropEffects を保持しておけば上手くいくような気がするのですけど、どうでしょうか?
深山様

おかつです。有り難うございました。

>>QueryContinueDragイベントでDragDropEffectsが取得出来れば、いいのかなと思うのですが、いい方法が思い浮かびません…
>>何かヒントがありましたら、よろしくお願いします。
>
>  私に思いついたのは GiveFeedback イベントを用いる方法でした。そこで取得した DragDropEffects を保持しておけば上手くいくような気がするのですけど、どうでしょうか?

この方法で、見事にうまくいきました。
感謝です。
どうも有り難うございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板