web-dev-qa-db-ja.com

VB.NETでファイルパスをドラッグアンドドロップして取得する

ファイル/実行可能ファイル/ショートカットをWindowsフォームアプリケーションにドラッグして、ドロップされたファイルの元のパスをアプリケーションに判別させ、文字列として返すようにしたいのですが。

例えば。デスクトップからアプリケーションとメッセージボックスに画像をドラッグし、画像のローカルパスに移動します。

それは可能ですか?誰かが私に例を教えてもらえますか?

15
rabbitt

とても簡単です。 AllowDrop プロパティをTrueに設定して DragEnter および- DragDrop イベント。

DragEnterイベントハンドラーでは、 DataFormats クラスを使用して、データが目的のタイプかどうかを確認できます。

DragDropイベントハンドラーで DataDragEventArgs プロパティを使用して、実際のデータと- 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
38
sloth

これは単なるメモなので、ドラッグアンドドロップが機能しない場合は、Visual Studioを管理者モードで実行していることが原因である可能性があることを示しています(Windows 7以降だと思います)。これは、現在Windowsで設定されているUACレベルにも関係しています。

4
gouderadrian