Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
テキストのドラッグ&ドロップによるムーブ
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9339#CommentId12837
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2009/9/10 06:21:37
> 他のアプリ(たとえばワードパッド)にMoveしようといたしますと、
> 勝手にCopyになってしまう点です。
それはワードパッド側の仕様です。
他のアプリへのドロップ時の動作は、VB からは制御できません。
VB から指定できるのは、DoDragDrop の引数である データ(data As Object)と、
使用可能な動作(allowedEffects As DragDropEffects)のみです。
ワードパッドの場合、ドラッグ元とドロップ先が、それぞれ同一アプリ上の内であれば、
「そのままでは Move」「Ctrl 押下で Copy」という動作モードになるのですが、
ワードパッドを 2 つ起動して、その間で文字列をドラッグしようとした場合、
「そのままでは Copy」「Alt 押下で Move」という動作になっています。
そして、VB からドロップした場合というのは、後者の状態にあたりますから、
Alt を押さない限りは、Move 扱いにならないのです。
ただしこれは、DoDragDrop に渡す DragDropEffects を
'コピーと移動を許可する
Dim
effect
As
DragDropEffects
effect = DragDropEffects.Copy
Or
DragDropEffects.Move
にしていた場合の話です。
Move のみを指定した場合には、ワードパッドは「常に Move」として処理されますし、
Copy のみを指定した場合には、ワードパッドは「常に Copy」として処理されます。
これはドロップ先は、allowedEffects で許可されている動作モードのみが
利用可能であるからです。(allowedEffects を無視するアプリもありますが…)
# DragDropEffects には、他にも Scroll や Link など幾つかのモードがありますが、
# それらをドロップ先のアプリがどのように処理するかは、ドロップ先が決める事であって、
# ドラッグ元である VB 側は一切関与する必要がありませんし、関与すべきではありません。