ファイル/実行可能ファイル/ショートカットをWindowsフォームアプリケーションにドラッグして、ドロップされたファイルの元のパスをアプリケーションに判別させ、文字列として返すようにしたいのですが。
例えば。デスクトップからアプリケーションとメッセージボックスに画像をドラッグし、画像のローカルパスに移動します。
それは可能ですか?誰かが私に例を教えてもらえますか?
とても簡単です。 AllowDrop
プロパティをTrue
に設定して DragEnter
および- DragDrop
イベント。
DragEnter
イベントハンドラーでは、 DataFormats
クラスを使用して、データが目的のタイプかどうかを確認できます。
DragDrop
イベントハンドラーで Data
の DragEventArgs
プロパティを使用して、実際のデータと- GetData
メソッド
例:
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.AllowDrop = True
End Sub
Private Sub Form1_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
Dim files() As String = e.Data.GetData(DataFormats.FileDrop)
For Each path In files
MsgBox(path)
Next
End Sub
Private Sub Form1_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.Copy
End If
End Sub
これは単なるメモなので、ドラッグアンドドロップが機能しない場合は、Visual Studioを管理者モードで実行していることが原因である可能性があることを示しています(Windows 7以降だと思います)。これは、現在Windowsで設定されているUACレベルにも関係しています。