カスタムオブジェクトのドラッグ&ドロップ
ここまで、DataFormatsクラスで規定されているさまざまなデータタイプのうち、いくつかの使用法を見てきました。DataFormatsクラスで規定されているデータタイプには、Bitmap、CommaSeparatedValue、Dib、Dif、EnhancedMetafile、FileDrop、Html、Locale、MetafilePict、OemText、Palette、PenData、Riff、Rtf、Serializable、StringFormat、SymbolicLink、Text、Tiff、UnicodeText、WaveAudioなどがあります。しかし、ここにリストされていないタイプのデータをドラッグ&ドロップしたい場合はどうなるでしょうか。例えば、ListViewコントロールからアイテムをドラッグしたいと思うかもしれません。この場合、DragEnterイベントは次のようになります。
If (e.Data.GetDataPresent _ ("System.Windows.Forms. _ ListViewItem()")) Then '---determine if this is a copy '---or move--- If (e.KeyState And CtrlMask) = CtrlMask Then e.Effect = DragDropEffects.Copy Else e.Effect = DragDropEffects.Move End If
また、MouseDownイベントハンドラは次のようになります。
Control.DoDragDrop(New _ DataObject("System.Windows.Forms. _ ListViewItem()", Items), _ DragDropEffects.Move Or _ DragDropEffects.Copy)
ご覧のように、Windowsアプリケーションにドラッグ&ドロップ機能を実装するのは、それほど難しくありません。必要なのは、サポートしたいデータのタイプを理解し、その特定のデータタイプを処理するのに必要な準備をすることです。
