使用しているソフトウェアまたは自分が開発したソフトウェアで、以前は問題なくできていたはずのドラッグ&ドロップ。
それがいつのまにかできなくなっていた!
でも原因が分からない!
そんなときにチェックすべき点をいくつか挙げてみます。(.NET Framework ベースのソフトウェアの話です)
OS のバージョンは?
OS のバージョンが変わると、以前は問題なく動作していたソフトウェアが正常に動作しなくなることは珍しくありません。
実は、Windows 7 までは問題なく動作していたドラッグ&ドロップが、Windows 10 では全く動作しなくなるか、おかしな挙動になることがあります。
お使いの OS が Windows 10 以降の場合は、ひょっとしたら下記の情報(私が作成したソフトウェアで発生した現象)が参考になるかもしれません。
.NET Framework のバージョンは?
.NET Framework 3.5 までをベースにしているソフトウェアで正常に動作していたドラッグ&ドロップが、Windows 10 以降の OS では動作しなくなりました。
Windows 7 では問題なくドラッグ&ドロップできていたのに、Windows 10 でドラッグすると、下図のように、マウスポインタが利用不可のマークに変わってしまってドロップできません。
この場合、Windows 10 でもドラッグ&ドロップを正常に動作させるには、そのソフトウェアで使用する .NET Framework のバージョンを 4 以降にします(ソフトウェアの再ビルドまたは再リビルドが必要です)。
.DoDragDrop が動作しなくなった
Windows 10 において、ドラッグしてドロップしたところまでは問題ないように見えるが、ドロップした後の動作がおかしくなったという場合は、そのソフトウェアのコードで .DoDragDrop を使用していないか確認してください。
これも私の経験ですが、Windows 10 では .DoDragDrop が動作しなくなったようです。したがって、
Call oControl.DoDragDrop(e.Data, DragDropEffects.All)
というようなコードがある場合は、書き方を変えなければなりません。
私の場合、次のようなコードに書き換えてこの問題を回避しました。
Call box_DragDrop(oControl, e)
Friend Sub box_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
:
End Sub